我正在尝试使用一些JSON参数在直接的javascript(jQuery不可用)中发出ajax请求。 javascript:
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)产生一个空数组。我做错了什么?
答案 0 :(得分:1)
简而言之,当您提出GET
请求时,.send
预计会有0个参数(或null
)。
通过GET
发送数据的唯一方法是将其附加到URL本身。
即便:
如果您在POST
中发送表单数据,则预期send
将包含表单编码数据(json用于json数据等),并且URL将只是服务器上的访问点。
GET
请求只是从该访问点获取数据(包括查询字符串)
看看我要去哪里?
因此,如果您希望在GET
中使用它,则需要将JSON设置为查询参数的属性(或将其转换为查询参数/值)。
答案 1 :(得分:0)
如果要发送请求正文,则应使用POST
请求,但是如果需要使用get请求,则应将数据作为键值对发送到url中。例如xhr.open("GET","viewpicture.php?data=" + encodeURIComponent(JSON.stringify(params)),true);
然后通过$_GET['data']
检索。