我使用jquery进行ajax调用。基本上我不知道如何访问我通过发布请求发送到服务器的数据。我不知道变量被称为什么或......某事。我不知道!
Ajax功能:
function ajax_client(url, json) {
return $.ajax({
url: url,
type: 'POST',
data: json,
dataType: 'json'
});
}
function gather_records(data, inp_col, fetch_col, limit) {
var json = JSON.stringify({
"ids" : data,
"inp_col" : inp_col,
"fetch_col" : fetch_col,
"limit" : limit
});
return ajax_client(base_url+'ajax_port/gather_records', json);
}
Codeigniter功能:
public function gather_records()
{
$data = json_decode($this->input->post('ids'));
log_message('debug', $data);//null
return json_encode($data);//null :(
}
我在这里从服务器接收数据没有问题(并使用jQuery访问),我的问题是我无法获取我发送到的数据 codeigniter。如果有任何不同,我会在MAMP上发展。
我尝试过其他变量名称,
$this->input->post('data');
$this->input->post('json');
似乎无效。 非常感谢我能得到任何帮助!
答案 0 :(得分:1)
您不需要JSON.stringify({..
只是传递一个物体,一切都会好的。我的意思是:
function ajax_client(url, json) {
return $.ajax({
url: url,
type: 'POST',
data: json,
dataType: 'json'
});
}
function gather_records(data, inp_col, fetch_col, limit) {
var json = {
"ids" : data,
"inp_col" : inp_col,
"fetch_col" : fetch_col,
"limit" : limit
};
return ajax_client(base_url+'ajax_port/gather_records', json);
}
还有一件事。您不需要在PHP端json_decode
使用它。因为jQuery
中的默认contentType是'application/x-www-form-urlencoded; charset=UTF-8'
更改行
$data = json_decode($this->input->post('ids'));
到
$data = $this->input->post('ids');
但如果您真的想发送JSON,可以添加contentType
return $.ajax({
url: url,
type: 'POST',
data: json,
contentType: 'application/json',
dataType: 'json'
});
您设置的 dataType
是"您期望从服务器返回的数据类型。" (http://api.jquery.com/jquery.ajax/)