对于ajax帖子,要传递的数据应该放在哪里?

时间:2013-02-17 16:35:13

标签: jquery model-view-controller

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

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

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

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

3 个答案:

答案 0 :(得分: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等等......

答案 1 :(得分:0)

我认为如果你只使用一种方法(GET(网址)或POST)会更好。

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

答案 2 :(得分:0)

您的查询是对的。

我认为您希望{_ 1}}和page参数在$ _GET,controllertask处可用作$ _POST。但是,问题似乎是data标题,您无法通过此方法控制。

参见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:
    设置标题:
    Content-Type
    只做一次。

  • 选项2:
    使用$.ajaxSettings['headers'] = [ 'Content-Type': 'application/form-www-url-encoded']

$.ajax
相关问题