在 Codeigniter 端访问 Ajax POST 变量时出现问题
Trouble Accessing Ajax POST variable on Codeigniter end
我正在使用 jquery 拨打 ajax 电话。基本上我不知道如何使用 post 请求访问我发送到服务器的数据。我不知道这个变量叫什么或者...什么的。我不知道!
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);
}
代码点火器函数:
public function gather_records()
{
$data = json_decode($this->input->post('ids'));
log_message('debug', $data);//null
return json_encode($data);//null :(
}
我从这里的服务器接收回数据没有问题(并使用 jQuery 访问),我的问题是我无法获取我发送给 的数据 代码点火器。如果有任何不同,我正在 MAMP 上开发。
我试过其他变量名,例如
$this->input->post('data');
$this->input->post('json');
None 似乎有效。
非常感谢我能得到的任何帮助!
你不需要做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);
}
还有一件事。您不需要 json_decode
它在您的 PHP 一侧。因为 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
你设置的是"The type of data that you're expecting back from the server." (http://api.jquery.com/jquery.ajax/)
我正在使用 jquery 拨打 ajax 电话。基本上我不知道如何使用 post 请求访问我发送到服务器的数据。我不知道这个变量叫什么或者...什么的。我不知道!
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);
}
代码点火器函数:
public function gather_records()
{
$data = json_decode($this->input->post('ids'));
log_message('debug', $data);//null
return json_encode($data);//null :(
}
我从这里的服务器接收回数据没有问题(并使用 jQuery 访问),我的问题是我无法获取我发送给 的数据 代码点火器。如果有任何不同,我正在 MAMP 上开发。
我试过其他变量名,例如
$this->input->post('data');
$this->input->post('json');
None 似乎有效。 非常感谢我能得到的任何帮助!
你不需要做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);
}
还有一件事。您不需要 json_decode
它在您的 PHP 一侧。因为 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
你设置的是"The type of data that you're expecting back from the server." (http://api.jquery.com/jquery.ajax/)