我有一个ajax发布的表单,在尝试了基于几乎类似问题的各种答案后,我想拔头发,但都无济于事。
我的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");
});
任何帮助都将不胜感激。
您不需要通过路由中的参数{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')
}
});
注意:我不使用FOSJsRoutingBundle
捆绑包进行js路由。我总是在数据属性中的模板上渲染路由。例如
html
<form type="POST" id="form" data-url="path('_save_profile')">
js
var url = $('#form').data('url');
参考
- 如何实现简单的注册表
- FOSJsRoutingBundle文档