我想通过AJAX(AngularJS)发送一个Symfony表单。为什么Symfony表单在通过AJAX正确发送数据后“未提交”?
然而,即使数据被清楚地发送,表格由Symfony的说是“未提交”(实际上是没有错误的,但一些调试表明isSubmitted
回报false
)
这里是FOSUserBundle测试登记表。
编辑:虽然图片看起来很小,但它们已被充分解析,因此如果在其全尺寸下显示它们是完全可读的。
这里是日志当我使用标准提交从HTTP形式:
这里是日志时我使用AJAX提交:
- 我已禁用CSRF令牌
- 我从AJAX中使用的方法是“post”,因此它应该没问题,因为它是Symfony预期的默认值(并且FOSUserBundle不会覆盖默认的AFAIK)。
- 其他形式(FOSUserBundle范围之外)被正确使用AJAX
发送你对此事的任何想法?任何指针?或者我可以检查的其他日志?
编辑:
我用的是default FOSUserBundle registration controller。
我差不多使用default FOSUserBundle registration form,但我添加了一个(当前)空的子表单,以便在开发中进一步使用它。
namespace NONG\SecurityBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class UserRegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options) {}
public function getParent() {
return 'fos_user_registration';
}
public function getName() {
return 'nong_user_registration';
}
}
页眉和与HTML形式发送数据(注:加了点星之前在接受使着色保持正确的):
POST /server/web/testfosuser/register/ HTTP/1.1
Host: mywebsite.com
Connection: keep-alive
Content-Length: 229
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/.*;q=0.8
Origin: http://mywebsite.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://mywebsite.com/server/web/testfosuser/register/
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx
fos_user_registration_form%5Bemail%5D=bidon%40bidon.com&
fos_user_registration_form%5Busername%5D=bidon&
fos_user_registration_form%5BplainPassword%5D%5Bfirst%5D=bidon&
fos_user_registration_form%5BplainPassword%5D%5Bsecond%5D=bidon
页眉与AJAX请求发送:(NB。加入星前点在接受使着色保持正确的):
POST /server/web/testfosuser/register HTTP/1.1
Host: mywebsite.com
Connection: keep-alive
Content-Length: 229
Accept: application/json, text/plain, */.*
Origin: http://mywebsite.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36
Content-Type: application/json;charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8
Referer: http://mywebsite.com/client/
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx
fos_user_registration_form%5Bemail%5D=bidonqdsfqsdf%40qsdf&
fos_user_registration_form%5Busername%5D=charles222&
fos_user_registration_form%5BplainPassword%5D%5Bfirst%5D=bidon&
fos_user_registration_form%5BplainPassword%5D%5Bsecond%5D=bidon
您是否可以显示您的表单代码,控制器代码以及由chrome网络标签捕获的两种情况下的请求标题和正文? – Flip 2015-02-23 22:33:59
我编辑了这个问题。 – Silverspur 2015-02-24 13:36:10