2013-08-20 127 views
1

POST AJAX我定义这样的路线:错误404与Symfony的1.4

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

试图从阿贾克斯形式这种方式发布的数据。

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

1578是订单的编号。 Id不是严格要求的,但它在那里。 但问题是,当我尝试做做POST Ajax请求我得到这个错误:

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

如果我改变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'); 
    } 
} 
+0

您的服务器端方法是否需要GET或POST?如果期望POST数据,那么GET不应该起作用。 – user1477388

+0

我该如何检查?我编辑了问题并在控制器Action中添加了控制器定义。 –

+0

你能告诉我更多关于如何处理'$ request'变量的代码吗? – user1477388

回答

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] 
+0

,我可以添加获取吗? –

+0

没有我用object_actions尝试,问题似乎仍然存在 –

+0

我更新了我的答案,但请查看链接的文档。在这个例子中,路线如下所示:order_request_export和生成的url应该如下所示:/ order /:id/export(order/1578/export)。 – 1ed