Php 使用Ajax提交2个symfony表单

Php 使用Ajax提交2个symfony表单,php,jquery,ajax,forms,symfony,Php,Jquery,Ajax,Forms,Symfony,我正在尝试使用ajax在一次提交中提交2个symfony表单 var data = $('#facebookPostTargetForm').serialize(); data = data.concat("\r\n", $('#facebookPostForm').serialize()); $.ajax({ url: '{{ path('facebookpostwizard_new') }}', type: "POST", data: data, dataTy

我正在尝试使用ajax在一次提交中提交2个symfony表单

var data = $('#facebookPostTargetForm').serialize();
data = data.concat("\r\n", $('#facebookPostForm').serialize());
$.ajax({
    url: '{{ path('facebookpostwizard_new') }}',
    type: "POST",
    data: data,
    dataType: 'html',
    success: function(data){
    //console.log(data);
    alert('OK');
    }
    });

除了在我的控制器中使用$form->HandlerRequest$请求时,我在获取第一个表单的最后一个字段时遇到了一些问题之外,几乎所有的事情都正常工作。大多数情况下,\u token so$form->isValid总是返回false,第二个表单的第一个字段总是返回false!!!!我没有把我的控制器的一个片段放在这里,因为如果我只提交一个表单,那么一切都很完美,它似乎与data.concat相关,但我尝试了很多方法,但都不起作用。提前谢谢

在不了解PHP代码的情况下,我只能猜测问题出在哪里。但我怀疑您没有正确处理接收到的阵列。或者更确切地说,您正试图构建与实际发送的内容完全不同的内容

不连接字符串,但连接数组。如果您只想连接表单的序列化查询字符串,只需使用+运算符,如下所示:

var data = $('#facebookPostTargetForm').serialize() + '&' + $('#facebookPostForm').serialize();
$form1 = $request->get('form1');
$field1 = $form1['field1']
这将从两个表单中生成一个大的查询字符串,并将它们作为$request对象中的POST变量提供。请注意,只有在两种表单中的字段名称不同时,这才起作用。如果字段具有相同的名称,form2将覆盖form1

如果使用相同的字段名并希望单独处理表单,则应发布对象而不是表单:

var data = {
    'form1': $('#facebookPostTargetForm').serializeArray(),
    'form2': $('#facebookPostForm').serializeArray()
};
这将在PHP语音中提交对象ob objects或多维关联数组。然后,您可以通过以下方式在PHP中访问它们:

var data = $('#facebookPostTargetForm').serialize() + '&' + $('#facebookPostForm').serialize();
$form1 = $request->get('form1');
$field1 = $form1['field1']

一些麻烦和不工作意味着什么,确切地说?对错误信息和/或意外行为的描述比这些模糊的陈述更合适。但是…为什么要在序列化表单数据前面添加换行符???那是干什么用的?我怀疑服务器是否会理解您试图提交的内容。好的方面@masterfloda我删除了我的帖子,因为我注意到它是多余的。它非常有用,只是说我在字符串中使用concat基于此,我只是错过了在concat中使用“&”的事实,它工作起来很有魅力!!我想我不能把这当作一个答案,这太可惜了!!!无论如何谢谢你@masterfloda与var data=$'facebookPostTargetForm'.serialize+'和'+$'facebookPostForm'.serialize;但是上传相关格式的文件????提前感谢@RubislandyRodriguez不使用普通jQuery。对于这一点,Juan删除的答案会很有帮助:-解决方案是ajaxForm插件。看到这个答案:@masterfloda我找到了这个:var target=$'facebookPostTargetForm'.serializeArray;var data=new FormData$'facebookPostForm'[0];对于var i=0;我