javascript - 在 Codeigniter 端访问 Ajax POST 变量时出现问题

标签 javascript php jquery ajax codeigniter

我正在使用 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');

似乎都不起作用。 非常感谢我能得到的任何帮助!

最佳答案

您不需要执行 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;字符集=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/)

关于javascript - 在 Codeigniter 端访问 Ajax POST 变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910531/

相关文章:

php - 使用 sprintf 进行 ORDER、LIMIT 和查询

jquery - 有没有办法使用 Python/Selenium Webdriver 确认网页上是否存在 jQuery?

jquery - CSS/JQuery 两行水平菜单

Javascript函数的参数是单词 "Array"而不是mySQL行

javascript - 在分配之前使用变量 'value'

php - domPDF 嵌套表格问题(右下角的矩形空白)

c# - asp.net 从 Javascript 异步调用 WebMethod

javascript - Cordova 在 Angular 应用程序中构建更改请求 url

javascript-交通灯,我的图像不会显示在 html 上

javascript - 在将图像上传到服务器之前旋转图像