javascript-symfony2动态表单修改ajax jquery无效的CSRF令牌
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-symfony2动态表单修改ajax jquery无效的CSRF令牌,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1781字,纯文字阅读大概需要3分钟。
内容图文
可以说我有产品,产品可以促销.单击复选框促销时,我希望显示promoPrice字段.这是我的AbstractType的示例
//...
//$builder->add(..);
$builder->add('promoProduct', 'checkbox', [
'required' => false,
]);
$builder->add('promoPrice', 'hidden')
//$builder->add(..);
$formModifier = function (FormInterface $form, $promoProduct = null) {
if ($promoProduct) {
$form->add('promoPrice', 'money');
}
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data->getPromoProduct());
}
);
$builder->get('promoProduct')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$promoProduct = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $promoProduct);
}
);
//...
这是我的javascript
...
var $promoProduct = $('#product_form_promoProduct');
$promoProduct.change(function() {
var $form = $(this).closest('form');
var data = {};
if ($promoProduct.is(':checked')) {
data[$promoProduct.attr('name')] = 1;
} else {
data[$promoProduct.attr('name')] = 0;
}
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: data,
success: function(html) {
$('#product_form_promoPrice').replaceWith(
$(html).find('#product_form_promoPrice')
);
}
});
});
...
所以这是我的问题,当我提交带有数据product_form [promoProduct]:0的表单时,响应被选中了promoProduct字段,并且由于选中了promoProduct字段,因此显示了promoPrice字段.同样在响应中,我得到“无效的CSRF令牌错误”.看来我通过AJAX发送的数据未在表单中使用,可能是因为无效的csrf令牌?
谢谢
解决方法:
已编辑
您还应该在ajax数据中传递令牌值:
$data['product_form']['_token'] = $('#product_form__token').val();
内容总结
以上是互联网集市为您收集整理的javascript-symfony2动态表单修改ajax jquery无效的CSRF令牌全部内容,希望文章能够帮你解决javascript-symfony2动态表单修改ajax jquery无效的CSRF令牌所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。