2014-02-17 94 views
2

我有一個AJAX提交的表單害我想拉我的頭髮已經在這裏嘗試了各種各樣的答案基於幾乎同樣的問題無濟於事NotFoundHttpException:未找到「POST路線/在Symfony2中

我有以下。在我的routing.yml文件

_save_profile: 
pattern: /register/save-profile/{data} 
defaults: {_controller: MYBundle:Registration:saveProfile} 
requirements: 
    _method: GET|POST 
options: 
    expose: true 

,並使用下面的代碼路線後我的形式

var postData = $('#form').serializeArray(); 
$.ajax(
     { 
    url: Routing.generate('_save_profile',{ 
     type: "POST", 
     data : postData, 
     }).done(function() 
     { 
      alert("Saved"); 
     }); 

任何幫助將非常感激。

+0

爲什麼不乾脆忽略'_method'要求,並接受所有的方法呢?你使用的是什麼版本的Symfony? 2.2 – Phil

+2

中的[HTTP方法要求](http://symfony.com/doc/current/book/routing.html#adding-http-method-requirements)語法已更改仔細一看,看起來您只是有一個錯字。不應該是'url:Routing.generate('_ save_profile'),輸入:'POST',...'?你的代碼實際上應該在瀏覽器的控制檯中觸發一個JS錯誤。 – Phil

+0

我使用symfony版本2.4,並沒有JavaScript錯誤,引用的URL工作正常。最初我沒有_method,並將其添加爲我一直在採摘的解決方案的一部分 –

回答

0

您不需要通過路由中的參數{data}發送表單數據。如果你想發送表單與Ajax,所以你需要。

更改路線:

_save_profile: 
    pattern: /register/save-profile/ 
    defaults: {_controller: MYBundle:Registration:saveProfile} 

變化JS:

var postData = $('#form').serializeArray(); 

    $.ajax({ 
     url: Routing.generate('_save_profile'), 
     type: "POST", 
     data: postData, 
     dataType: "json", 
     success: 
       function(result) { 

        console.log(result); 

       }, 
     error: 
       function() { 
       alert('Error') 
       } 
    }); 

:我不使用JS路由FOSJsRoutingBundle束。我總是在數據屬性中的模板上呈現路由。例如。

HTML

<form type="POST" id="form" data-url="path('_save_profile')"> 

JS

var url = $('#form').data('url'); 

參考

  1. How to implement a simple Registration Form
  2. FOSJsRoutingBundle documentation
+0

非常感謝!像魅力一樣工作! –

相關問題