1

我正在使用自制的 MVC 框架。客户端将当前页面#、控制器名称、所需任务和任何相关数据传递给服务器。所有这些信息都可以在 URL 或 post 对象中。

我强烈怀疑要保存的数据应该存储在 post 对象中,并且可能也是任务,因为它仅适用于 post 数据。页码和控制器名称在 URL 中可能更有意义,因为我将收到具有相同页码和控制器的类似 get 请求。我在下面的示例中以这种方式显示它。

我应该在哪里找到要传递的信息,为什么?谢谢

$.post('index.php?page=123&controller=edit',{task:'saveSomething', data:'whatever'});
4

3 回答 3

2

如果要检索服务器上的现有资源,则应使用GET ,如果创建资源或修改现有资源,则应使用POST 。您应该阅读 HTTP 规范。

话虽如此,将所有数据放在POST对象中可能是最简单的。

前任。

var post_data = {
  page:123,
  controller:'edit',
  //other data
};

$.post('/url',post_data,function(response){/*callback function*/});

更进一步,您应该有一个页面控制器,其中包含页面 id 传递给的编辑操作。然后,您将在 url 部分中获得要访问的控制器和操作,以及 POST 数据中的资源 id。

根据您的应用程序的范围,您很可能应该使用可以为您处理此类事情的框架。这样,您的应用程序将保持一致的结构,并且 99% 的这些障碍已经被其他用户考虑过了。你可能想考虑使用类似 CodeIgniter、CakePHP、FuelPHP 等的东西......

于 2013-02-17T16:40:49.670 回答
0

我认为最好只使用一种方法,GET(url)或POST。

对我来说,POST 总是更好的方式。除非您特别想使用 URL 来传递数据。

于 2013-02-17T16:38:07.337 回答
0

你的查询是对的。

我假设您希望参数在 $_GETpage和$_POST 中可用controller。但是,问题似乎出在标题上,您无法通过此方法控制它。taskdataContent-Type

https://github.com/jquery/jquery/blob/1.4.2/src/ajax.js#L143 神奇之处在于https://github.com/jquery/jquery/blob/1.4.2/src/ ajax.js#L205

  • 选项 1:
    设置标题:
    $.ajaxSettings['headers'] = [ 'Content-Type': 'application/form-www-url-encoded'].
    只做一次。

  • 选项 2:
    使用$.ajax

$.ajax({
    type: "POST",
    headers: ['Content-Type': 'application/form-www-url-encoded'],
    url: 'index.php?page=123&controller=edit',
    data: {task:'saveSomething', data:'whatever'},
});
于 2013-02-17T16:53:05.037 回答