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