XHRでPOSTでデータが送信できない
POSTでデータが受け渡しできないスクリプトの例
「XMLHttpRequest(※以下XHRと略)オブジェクト生成 → openメソッドでHTTPメソッド(ここではPOST)・URLを指定 → sendメソッドでデータ送信 → 返り値出力」という簡単なスクリプトを書いてみたんですが、どうやらPOSTできなていようです。
クライアント側:sample.html(文書型宣言などは省略しています)
<script language="JavaScript" type="text/javascript">// <![CDATA[
function getRes() {
var obj = new XMLHttpRequest();
obj.open('POST', './echo.php', true);
obj.send('data=送信するデータ');
obj.onreadystatechange = function() {
if (obj.readyState == 4) {
var res = obj.responseText;
alert(res);
}
}
}
// ]]></script>
<form>
<input type="button" value="サーバにデータ送信&折り返し受信" onclick="getRes();" />
</form>
サーバ側:echo.php(POSTで受信したデータに"受信しました"というメッセージをつけて返すだけのもの)
<?php $data = htmlspecialchars($_POST['data']); echo $data . 'をサーバ側で受信しました。';
上記のスクリプトでは、正常にPOSTでデータが送信されると「送信するデータをサーバ側で受信しました。」というアラートボックスが表示されます。
しかし、上記スクリプトでは正常にPOSTで受け渡しができまんでした。(「をサーバ側で受信しました。」と表示されるだけ)
解決方法
まず結論から言うと、openメソッドの直後にsetRequestHeaderメソッドでContent-Typeを下記のように指定すれば正常に送信できるようになりました。
obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
最終更新 2009-12-04

この記事へのコメント
まだコメントは投稿されていません。