jQuery&;带有Codeigniter的Ajax-似乎无法在控制器中打印$\u GET数组

jQuery&;带有Codeigniter的Ajax-似乎无法在控制器中打印$\u GET数组,jquery,ajax,forms,codeigniter,Jquery,Ajax,Forms,Codeigniter,我有一个表单,在这么多秒后自动将表单保存到数据库中(这就是我的意图) 下面的脚本获取jQueryAjax请求中的值并将其发送给控制器——但每当我尝试var_转储这些值时,它似乎无法从序列化数组中工作。当我在Firefox中查看FireBug时,我可以看到参数在那里,但似乎无法打印阵列-有人能解释为什么吗 // view logic var t = setTimeout("autosave()", 10000); $.ajax( { type: "GET", url: "/

我有一个表单,在这么多秒后自动将表单保存到数据库中(这就是我的意图)

下面的脚本获取jQueryAjax请求中的值并将其发送给控制器——但每当我尝试var_转储这些值时,它似乎无法从序列化数组中工作。当我在Firefox中查看FireBug时,我可以看到参数在那里,但似乎无法打印阵列-有人能解释为什么吗

// view logic
var t = setTimeout("autosave()", 10000); 
$.ajax( 
{ 
    type: "GET", 
    url: "/questionnaires/autosave", 
    data: $("form").serialize(), 
    cache: false, 
    success: function(msg) {
        return false;
    }
});

// controller logic
function autosave()
{
    $str = parse_str( $this->input->get_post('form') );
    var_dump($str); // intend to do an insert query here to the db
}

您很可能没有在config.php中启用
query\u string

因此,您将无法可靠地使用
GET
。您最好的选择是将
类型:“GET”
更改为
类型:“POST”

然后使用
$this->input->post()
访问post变量。您可以从Codeigniter文档中引用此信息:

$this->input->post() 第一个参数将包含您要发布的帖子的名称 寻找:

$this->input->post('some_data'); The function returns FALSE (boolean)
如果您尝试检索的项目不存在

第二个可选参数允许您通过XSS运行数据 过滤器。通过将第二个参数设置为布尔值TRUE来启用它

$this->input->post('some_data', TRUE); To return an array of all POST
项调用时不带任何参数

要返回所有POST项并通过XSS筛选器传递它们,请设置 第一个参数为空,第二个参数设置为布尔值

如果列表中没有项,则函数返回FALSE(布尔值) 邮局


改为使用
$this->input->post()
。尝试使用
键入:“post”
,因为使用GET传递数据会与
路由
配置(并非所有时间)OMG冲突-在这方面也花费了很多时间!这么简单的一个小小的修正。。为什么我没想到这个哈哈!干杯,加文-非常感谢!我如何接受你的回答?我看不到勾号图标?只是一个旁注,不要将字符串传递给
setTimeout
,它使用
eval
!而是传递函数<代码>var t=设置超时(自动保存,10000)@Rocket好电话谢谢!
$this->input->post(NULL, TRUE); // returns all POST items with XSS
$this->input->post(); // returns all POST items without XSS