服务器没有看到javascript ajax请求中发送的JSON

时间:2013-02-23 18:32:36

标签: php javascript ajax json

我正在尝试使用一些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)产生一个空数组。我做错了什么?

2 个答案:

答案 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']检索。