【发布时间】:2015-02-23 20:10:20
【问题描述】:
我想通过 AJAX (AngularJS) 发送 Symfony 表单。
但是,即使数据被明确发送,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 表单一起发送的标题和数据(注意,在 Accept 中的星号前添加了一个点,以便颜色保持正确):
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 请求一起发送的标头:(注意。在 Accept 中的星号之前添加了一个点,以便颜色保持正确):
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 网络选项卡捕获的两种情况下的请求标头和正文?
-
我已经编辑了问题。
标签: ajax forms symfony fosuserbundle