CodeIgniter Ajax CSRF Jquery Cookie方法出乎意料地运行

时间:2011-08-03 01:00:16

标签: php ajax codeigniter csrf

Javascript部分:

var token = $.cookie("csrf_cookie_name");
var tx = document.getElementById("tx"+working_row).value;
var mods =document.getElementById("mods"+working_row).value;
var pos = document.getElementById("pos"+working_row).value;
var startdate = document.getElementById("startdate"+working_row).value;
var enddate = document.getElementById("enddate"+working_row).value;
var fordx = document.getElementById("4dx"+working_row).value;
var qty = document.getElementById("qty"+working_row).value;
var price = document.getElementById("price"+working_row).value;
obj = new Object();
obj={'csrf_token_name':token,'tx':tx,'mods':mods,'pos':pos,'startdate':startdate,'enddate':enddate,'fordx':fordx,'qty':qty,'price':price};
alert(obj.csrf_token_name);
$.post("index.php/auth/fee_schedule",obj, function(data){
    alert(data);
});

我遇到的问题是令牌变量未包含在帖子中。我不知道为什么。 Alert是[Object Object],因此为null。页面标题包含以下内容:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Medata Preauthorzation System</title>
    <link rel="stylesheet" href="<?php echo base_url();?>css/screen.css" type="text/css" media="screen">
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery.sexy-combo.min.js"></script>
    <link rel="stylesheet" href="<?php echo base_url();?>css/jquery-ui-1.8.13.custom.css" type="text/css" media="screen">
    <link rel="icon" type="image" href="/medata/favicon.ico">
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery.impromptu.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>js/jquery-ui-1.8.13.custom.min.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>js/cookie.js"></script>
</head>

因此包含了库和Cookie功能。我在同一页面上使用其他时间的cookie函数来做帖子并且它工作正常,但是我没有将它们中的任何一个放入带有其他变量的对象中,所以它只是内联alla

$.post("index.php/auth/tx_history/"+tx_code, { csrf_token_name: $.cookie("csrf_cookie_name") }, function(data){
    //alert(data);
        $("#price"+rowid).val(data);
});

我喜欢一些建议,我在下午的大部分时间里一直在反对这段代码。

1 个答案:

答案 0 :(得分:0)

也许:

var token = $.cookie("<?php echo $this->config->item("csrf_cookie_name"); ?>");