在Codeigniter控制器中处理JSON数据

时间:2017-06-19 06:10:57

标签: php jquery json codeigniter

使用GET请求从JQuery发送JSON数据时遇到问题。这是我用JET发送数据的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();

这是我的Controller文件。

    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";
    }

在Controller中没有抓住问题,插入查询也没有插入任何内容。如何解决这个问题?也许我在代码中做错了什么?谢谢你。

1 个答案:

答案 0 :(得分:3)

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

ajax请求你发送ws而不是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";
}