使用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中没有抓住问题,插入查询也没有插入任何内容。如何解决这个问题?也许我在代码中做错了什么?谢谢你。
答案 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";
}