我的脚本中有一个由 ajax 提交的表单,如下所示:
jQuery.ajax({
url:jQuery('form',modal).attr('action'),
contentType: "application/json; charset=utf-8",
dataType: 'json',
type:'post',
data: {
email:jQuery('input[name="email"]',modal).val(),
something:jQuery('input[name="something"]',modal).val(),
level:jQuery('select[name="level"]',modal).val(),
YII_CSRF_TOKEN: jQuery('input[name="csrf"]').val()
},
success: function(data){
jQuery('.message',modal).html(data.message).slideDown();
if (!data.success){
jQuery('input[name="email"]',modal).addClass('error');
} else {
jQuery('input[name="email"]',modal).removeClass('error');
}
}
});
一切都很好。然后今天我正在编写用于从数据库中删除项目的新函数。所以我编写了我的 php 函数(没有什么特别复杂的),并通过单击链接向它添加了 jQuery ajax 调用:
// ajax request
jQuery.ajax({
url:jQuery(this).attr('href'),
contentType: "application/json; charset=utf-8",
dataType: "json",
type:'post',
data: {
something:jQuery(this).attr('alt'),
YII_CSRF_TOKEN:jQuery('input[name="csrf"]').val()
},
success: function(data){
}
});
链接和表单都在同一个视图中。但是在添加了删除一切的新功能之后,一切都崩溃了。我无法向服务器发出任何 POST 请求,只是出现“错误:无法验证 CSRF 令牌”。当我通过 CSRF 时,我看不到问题所在。萤火虫日志显示:
YII_CSRF_TOKEN bf6d9bf62ee96f32e34a74244baca7f2f1bdd569
something 4
我可能理解新功能由于任何原因都不起作用,但是为什么其他功能也发生故障,我无法理解。