【问题标题】:Handling JSON data in Codeigniter Controller在 Codeigniter 控制器中处理 JSON 数据
【发布时间】:2017-11-21 05:49:15
【问题描述】:

我在使用 GET 请求从 JQuery 发送 JSON 数据时遇到问题。这是我用 GET 发送数据的 JQuery。

    var xhr = new XMLHttpRequest();
    var url = "http://example.com/share/new?data=" + JSON.stringify({"id": "1", "type": "new", "data": "testabcd"});
    xhr.open("GET", url, true);
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var json = JSON.parse(xhr.responseText);
        }
    };
    xhr.send();

这是在我的控制器文件中。

    public function share()
    {
        header('Content-type: application/json');

        $Data = json_decode($_GET["data"]);

        $data_share = array(
            'id' => $Data['id'],
            'type' => $Data['type'],
            'data' => $Data['data']);

        $this->db->insert('mytable', $data_share);

        return "200";
    }

问题是控制器中没有抓取,插入查询没有插入任何东西。如何解决这个问题?也许我的代码做错了什么?之前谢谢你。

【问题讨论】:

  • $Data 有价值吗?
  • @aldrin27 如何看$Data有没有值?
  • print_r($Data); exit; 下面$Data
  • 我添加print_r @aldrin27 后没有任何反应

标签: php jquery json codeigniter


【解决方案1】:

当您将 json 数据发送到 php 时,它的 in 不进来 $_POST$_GET 它的 in php://input strem;

你发送的 ajax 请求不是 jQuery,而是它的核心 js,这很好,但它非常不灵活,并且容易在不同的浏览器中中断。我只是使用了 jQuery 版本的 ajax,它非常灵活并且可以跨浏览器。

试试这个: JS:

$.ajax({
      method:'POST',
      contentType:'application/json',
      url:'http://example.com/share/new',
      data: JSON.stringify({"id": "1", "type": "new", "data": "testabcd"}),
      success:function(response){
       console.log(response);
      }

   });

PHP:

public function reservation()
{

    $Data = json_decode(file_get_contents('php://input'), true);

    $data_share = array(
        'id' => $Data['id'],
        'type' => $Data['type'],
        'data' => $Data['data']);

    $this->db->insert('mytable', $data_share);

    return "200";
}

【讨论】:

  • 它比我的代码要好,但插入数据库时​​仍然得到 NULL 数据。这意味着我仍然无法获取数据。
  • 因为你使用核心 js 我 hv 转换为 jquery ajax,我认为它现在应该可以工作了
  • 对不起,我不太明白转换为 jquery ajax。你能解释更多吗?谢谢
  • 我的意思是你发送的 ajax 请求不是 jQuery 而是它的核心 js,这很好,但它非常不灵活,并且容易在不同的浏览器中中断。我只是使用了 jQuery 版本的 ajax,它非常灵活并且可以跨浏览器。
  • 你能给我举个例子吗?
猜你喜欢
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多