web-dev-qa-db-ja.com

AJAX XMLHttpRequest POST

POSTメソッドを使用してXMLHttpRequestを記述しようとしています。過去にGETメソッドを使用してXMLHttpRequestを使用できましたが、POSTに苦労しています。

これが私のコードです:

var xmlhttp = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

var url = "http://www.mysite.com/script.php";
var params = "var=1";
xmlhttp.open("POST", url, true);
xmlhttp.send(params);

それは基本的にPHPスクリプトを呼び出し、それがデータベースにいくつかの情報を追加します。

14
diggersworld

POSTリクエストを実行するときに必要なContent-typeヘッダーに明示的に設定するのを忘れていました。

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

また、パラメータを適切にエンコードするために encodeURIComponent を使用することを忘れないでください。例:

var params = "var=" + encodeURIComponent("1");

(この特定の例では必須ではありませんが、+などの特殊文字を使用する場合、パラメーターテキストをエンコードしないと、状況がひどく悪くなります)。

Update–次のように、%20のすべてのインスタンスを+に置き換える必要もあります

var params = params.replace(/%20/g, '+');
49
Marcel Korpel