【问题标题】:Error 404 with POST ajax in Symfony 1.4Symfony 1.4 中的 POST ajax 错误 404
【发布时间】:2013-08-20 13:54:48
【问题描述】:

我有这样定义的路线:

order_request:
class: sfDoctrineRouteCollection
options:
model:                OrderRequest
module:               order
prefix_path:          /order
column:               id
with_wildcard_routes: true

尝试以这种方式使用 ajax 从表单发布数据。

$.post('order/1578/exportPostsToProject', jsonString, function(data) {
    ...
});

1578 是订单的 ID。 Id 不是严格要求的,但它就在那里。 但问题是,一旦我尝试使用 POST 执行 ajax 请求,我就会收到此错误:

POST http://184.95.x.xx/backend.php/order/1578/exportPostsToProject 404 (Not Found) 

如果我在 GET 中更改 POST,则不会出现错误并且一切正常。 我怎么解决这个问题 ?我需要发布数据。

我的控制器:

public function executeExportPostsToProject(sfWebRequest $request)
{

    $orderRequest = $this->getRoute()->getObject();
    $this->order_request = $orderRequest;
    $this->orderPostList = $orderRequest->getOrderGeneratedPosts();

    if ($request->isXmlHttpRequest())
   {
        $settingsString = $request->getParameter('settingsStr');
   }
}

【问题讨论】:

  • 您的服务器端方法是否需要 GET 或 POST?如果它需要 POST 数据,那么 GET 不应该工作。
  • 我如何检查这个?我编辑了问题并在控制器操作中添加了控制器定义。
  • 你能告诉我更多关于你如何处理$request变量的代码吗?

标签: symfony1 symfony-1.4


【解决方案1】:

您应该将object route 添加到明确允许 POST 请求的集合中。例如:

order_request:
    class: sfDoctrineRouteCollection
    options:
        model:                OrderRequest
        module:               order
        prefix_path:          /order
        column:               id
        with_wildcard_routes: true
        object_actions:
            export: [get, post]

【讨论】:

  • 我也可以添加 Get 吗?
  • 我没有尝试使用 object_actions 并且问题似乎仍然存在
  • 我更新了我的答案,但也请查看链接的文档。在此示例中,路由如下所示:order_request_export,生成的 url 应如下所示:/order/:id/export (order/1578/export)。
  • 就是这样。非常感谢你。 object_actions 和正确的 url_for 是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多