0

いくつかのJSONパラメータを使用して、ストレートなJavaScript(jQueryは利用できません)で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) によって空の配列が生成されます。私は何を間違っていますか?

4

2 に答える 2

1

要するに、GETリクエストを行うとき、 の.sendパラメーターは 0 (またはnull) であることが期待されます。データを送信する唯一の方法は、GETそれを URL 自体に追加することです。

つまり
、フォーム データを で送信する場合、フォーム エンコードされたデータ (json データの場合は json など) が含まPOSTれることが予想され、URL はサーバー上のアクセス ポイントにすぎません。send

GETリクエストは、そのアクセス ポイントからデータをフェッチするだけです (クエリ文字列を含む) 。
私がこれでどこに行くのか分かりますか?

したがって、これを で機能させたい場合は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 に答える