0

我正在尝试使用一些 JSON 参数在直接的 javascript 中发出 ajax 请求(jQuery 对我不可用)。的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) 产生一个空数组。我究竟做错了什么?

4

2 回答 2

1

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

也就是说:
如果您在表单数据中发送POST,则预期将send包含表单编码数据(json 用于 json-data 等),并且 URL 将只是服务器上的访问点。

GET请求只是从该访问点获取数据(包括查询字符串)。
看看我要去哪里?

因此,如果您希望它在 a 中工作GET,您需要将 JSON 设置为查询参数的属性(或将其转换为查询参数/值)。

于 2013-02-23T18:38:24.573 回答
0

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

于 2013-02-23T18:38:07.647 回答