服务器没有看到在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设置为查询参数的一个属性(或者把它变成查询参数/值)。