我是javascript的基础,所以请帮助我。我有一个功能,它为每个城市选择(onchange)。我必须在帖子中添加csrf标记。
默认功能很好,但需要CSRF。
function getcitydetails(id) {
$.ajax({
type: "POST",
url: base_url + "fanok/ajax_city_list/" +id,
data: id='city_county_code',
success: function(data){
$('#user_city').html(data);
},
});
}
还有一个我尝试过的。
function getcitydetails(a) {
var b = {
id = a
}
b[csfr_token_name] = $.cookie(csfr_cookie_name);
$.ajax({
type: "POST",
url: base_url + "fanok/ajax_city_list/" +id,
data: b[id]='city_county_code',
success: function(data){
$('#user_city').html(data);
},
});
}
哪个无效:/
请帮帮我。
提前致谢。
答案 0 :(得分:0)
在不知道API期望的数据的情况下,这个问题很难回答。但是,您的代码中存在多个错误(或至少是奇怪的习惯):
var b = {
id = a
// ^ What is that = doing there?
}
// And
$.ajax({ // [snip]
data: b[id]='city_county_code'
// ^ Again, strange location for an assignment: assigning 'city_county_code' to b[id] and then storing that result (thus 'city_county_code') to data
})
最有可能起作用的(假设变量csfr_token_name
和csfr_cookie_name
[sic]在范围内声明并具有正确的值):
function getcitydetails(id) {
var postData = {
id: id // or id: 'city_county_code' (I don't know)
}
postData[csfr_token_name] = $.cookie(csfr_cookie_name);
$.ajax({
type: "POST",
url: base_url + "fanok/ajax_city_list/" +id,
data: postData,
success: function(data){
$('#user_city').html(data);
},
});
}
答案 1 :(得分:0)
我不知道哪个框架用作后端,但您可以将CSRF作为元数据放在页面顶部,如下所示
<meta name="csrf-token" content="<?php echo $CSRF; ?>">
在jquery上的文件就绪函数的启动时输入以下代码
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
然后所有ajax请求都将CSRF作为标头 至于Codeigniter
function getcitydetails(id) {
var csrfName = '<?php echo $this->security->get_csrf_token_name(); ?>',
csrfHash = '<?php echo $this->security->get_csrf_hash(); ?>';
var postData = {
id: id,
csrfName:csrfHash
// or id: 'city_county_code' (I don't know)
}
postData[csfr_token_name] = $.cookie(csfr_cookie_name);
$.ajax({
type: "POST",
url: base_url + "fanok/ajax_city_list/" +id,
data: postData,
success: function(data){
$('#user_city').html(data);
},
});
}