服务器没有看到在JavaScript发送的JSON ajax请求

问题描述:

我试图做一个Ajax请求在直接JavaScript(jQuery不提供给我)与一些JSON参数。 的JavaScript:服务器没有看到在JavaScript发送的JSON ajax请求

var params = {'ajax': true, 'albumid': albumid, 'sequencenum': sequencenum}; 
var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange=function() 
{ 
    if (xhr.readyState==4 && xhr.status==200) 
    { 
     console.log(xhr.responseText); 
    } 
} 
xhr.open("GET","viewpicture.php",true); 
xhr.setRequestHeader("Content-Type", "application/json") 
console.log("sending request"); 
xhr.send(JSON.stringify(params)); 

在viewpicture.php,一个的var_dump($ _ GET)产生一个空数组。我究竟做错了什么?

如果您想发送请求正文,您应该使用POST请求,但是如果您需要使用get请求,则应该将该数据作为url中的键值对发送。例如xhr.open("GET","viewpicture.php?data=" + encodeURIComponent(JSON.stringify(params)),true);然后通过$_GET['data']检索。

总之,当你提出GET请求时,.send预计有0个参数(或者是null)。 通过GET发送数据的唯一方法是将其附加到URL本身。

机智:
如果你在表单数据发送,在POST,期待将是send将包含表单编码的数据(JSON数据等JSON),以及URL只想成为服务器上的接入点。

A GET请求只是从该接入点获取数据(包括查询字符串)。
看看我要去哪里?所以如果你想让它在GET中工作,你需要将你的JSON设置为查询参数的一个属性(或者把它变成查询参数/值)。