2008/10/18

[php]非同期でサーバーにPOSTした時

クライアントで処理を行うA.htmlと、サーバーで処理を行うB.phpがあったとします。

A.htmlはjavascriptで、B.phpファイルにPOSTでパラメーターを送信するとき(俗に言うajax)、注意したいのが、その送信された、パラメータの取得方法。

ColdFusionの場合は、単純に、変数名で取得できたのですが、phpは、$_POST["変数名"]で書かないと取得できないみたいです。

どうしてこれに気がついたのかというと、最初、$変数名でソースを書いていたのですが、いっこうに取得できず、マニュアルをみたら$_POST — HTTP POST 変数という説明をみて、「ひょっとしたら」と思って試したらできたのです。

確かに、JavaScripからPOST通信しているわけですか、理にかなっているわけです。

追記
ちょっと書いた記事に納得がいかなかったので、ソースレベルで書いていきたいと思います。

Aのプログラムが下のようになっていたとします。

<input type="text" name="hoge" value="">

<script type="text/javascript">

/* IE */
if(Prototype.Browser.IE){
httpObj = new ActiveXObject("Msxml2.XMLHTTP");
・・・処理が続く
/* FireFox */
}else{
httpObj = new XMLHttpRequest();
・・・処理が続く

}
httpObj.setRequestHeader('Content-Type'
, 'application/x-www-form-urlencoded');
httpObj.send('パラメータ名1=値1&パラメータ名2=値2・・・・');
</script>

で、この時にBでは、もらったパラメーターを下のようにして取得します。

$_POST["パラメータ1"];
$_POST["パラメータ2"];
・・・

これで、非同期のパラメータ処理もうまくできるかなと

0 コメント:

コメントを投稿