CSRF to getcitydetails jquery功能

时间:2018-05-26 19:03:48

标签: javascript jquery

我是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);
    },
});

}

哪个无效:/

请帮帮我。

提前致谢。

2 个答案:

答案 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_namecsfr_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);
        },
    });

}