Jquery 对于ajax post,要传递的数据应该位于哪里?

Jquery 对于ajax post,要传递的数据应该位于哪里?,jquery,model-view-controller,Jquery,Model View Controller,我使用的是一个自主开发的MVC框架。客户端将当前页面#、控制器名称、所需任务和任何相关数据传递给服务器。所有这些信息都可以在URL或post对象中 我强烈怀疑要保存的数据应该存储在post对象中,并且可能也存储在任务中,因为它只适用于post数据。在URL中,页码和控制器名称可能更有意义,因为我将使用相同的页码和控制器执行类似的get请求。我在下面的示例中以这种方式显示它 我应该在哪里找到要传递的信息,为什么?多谢各位 $.post('index.php?page=123&control

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

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

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

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

我认为如果你只使用一种方法,或者获取(url)或者发布,会更好


对我来说,邮寄总是一种更好的方式。除非您特别希望使用URL传递数据。

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

也就是说,将所有数据放在POST对象中可能是最简单的

更进一步说,您应该有一个页面控制器,带有页面id传递给的编辑操作。然后,您将在url部分拥有想要访问的控制器和操作,并在POST数据中拥有资源的id

根据应用程序的范围,您最有可能使用一个框架来处理这类事情。这样,您的应用程序将保持一致的结构,并且99%的这些障碍已经被其他用户考虑过了。您可能需要考虑使用CodeIgniter、CakePHP、FuelPHP等工具。

您的查询是正确的

我假设您希望
页面
控制器
参数在$\u GET和
任务
数据
作为$\u POST提供。但是,问题似乎出在
内容类型
标题上,您无法通过此方法控制该标题

看 魔力在于

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

    只做一次

  • 选项2:
    使用
    $.ajax


您所说的“定位要传递的信息”是什么意思?您所拥有的将把任务和数据变量作为POST对象传递到index.php。页面和控制器将根据语言在GET/URL对象中传递。你的问题是什么?您可以在数据之后移动页面和控制器,并将所有内容都放在POST对象中。@ExplosionPills。页码、控制器名称、任务以及要发送到服务器的任何数据。@Leeish。我的问题是是否应该将页码和控制器名称移动到post对象中。也就是说,为了永久链接,您需要在URL中使用它们。我相信Rails/Wheels方法使用
domain.com/controller/action/key
类型route,如果我没记错的话,它是默认的。任何附加参数都会在键之后传入,如
?param=value
页码和控制器在某种意义上定义了页面。任务可能是应该在其中使用GET的GetSomeStuff,或者应该在其中使用POST的SaveSomeStuff。这就是为什么我认为无论使用GET还是POST,页码和控制器都应该始终位于URL中。也许只是我的愚蠢想法……你指出我应该“在url部分中拥有你想要达到的控制器和操作,以及发布数据中的资源id”。我猜这是我最初的想法,但听起来你也指出我应该将所有内容都放在发布数据中。您推荐哪种方式?按照您目前设计应用程序的方式,您不妨将其放在POST数据中。但作为将来的参考,这不是正确的方法。考虑使用MVC模式/框架。谢谢Ethan,请为我指出我做得不好的方向。说得好。我个人更喜欢像
/c/page id/controller id
(REST)这样的url,并发布所有其他数据。在服务器上,对数据库中的对象(如本例中的“页面”)使用url rewrite for
/c/*
,您应该有一个与您的模型和视图交互的控制器,然后在该控制器中有一个“编辑”动作,对给定的页面id执行操作。
var post_data = {
  page:123,
  controller:'edit',
  //other data
};

$.post('/url',post_data,function(response){/*callback function*/});
$.ajax({
    type: "POST",
    headers: ['Content-Type': 'application/form-www-url-encoded'],
    url: 'index.php?page=123&controller=edit',
    data: {task:'saveSomething', data:'whatever'},
});