在代码点火器端访问 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访问)没有问题,我的问题是我无法获取要发送到codeigniter的数据。如果这有任何不同,我正在开发 MAMP。

我尝试了其他变量名称,例如,

$this->input->post('data');
$this->input->post('json');

似乎没有一个有效。非常感谢我能得到的任何帮助!

你不需要做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类型是'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/)