woshidan's blog

あいとゆうきとITと、とっておきの話。

AjaxでJavascriptからphpに値を渡す

今日はjavascriptからphpに値が渡されるというのを確認してました。

 

参考にしたのはこちら。

10日でおぼえるAjax 入門教室

10日でおぼえるAjax 入門教室

 

他にもネットであちこち参考にさせていただいたりしてるけど、一冊ずつは紙の本がある状態が好き。入門のほうこそ紙が好き。

 

で、今日分かったこと。

Javascriptからphpにデータを渡すためにJavascriptでやることは、

  1. (任意のオブジェクト名、ここではxmlhttp) = new XMLHttpRequest();(IE6以前はxmlhttp = new ActiveXObject("Msxml2.XMLHTTP");らしい)でXMLHttpRequestオブジェクトを作る。
  2. xmlhttp.open("送信方式","データ送信先url",非同期(true)/同期(false),"(送信先urlのサーバーに接続するときの)ユーザー名","パスワード")で送信方式と送信先を指定。openは最初の二つ以外は省略可能。
  3. xmlhttp.setRequestHeaderで各種送信時の設定(キャッシュの利用など)を設定

(2,3についはGET,POSTで最低限必要な記述方法に差がある)

  • xmlhttp.send()で設定したアドレスにデータを送る(phpのアドレスを指定しておけばphpにデータを渡せる)

 

で、2,3の記述方式が

GETの場合:openのデータ送信先urlの部分に送信したいデータを書いてしまう。sendの()はnull.

例:

xmlhttp.open('GET','example.php?data=1');

xmlhttp.send(null);

 

GETはアドレスからデータを取る、というところを思い出して納得。

POSTの場合:openのデータ送信先urlの部分にはアドレスだけ書く。send()の()内にデータを書く。

また.setRequestHeaderで以下の設定が必要。

例:

xmlhttp.open('POST','example.php');

xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

xmlhttp.send('data=1');

 

あと、XMLHttpRequestオブジェクトのresponseTextにはphpでprintで出力した値が入っている感じです。

 

open()の三番目以降のパラメータは省略してもよいと書いてあったので、省略してて

ずっと動かなくて本を買うくらいあれこれ考えたのだけど、パスワードきちんと入れたら動いたので、

open()で動かなかったらパスワード入れるべきかと思いつつ、

この状態ってつまりweb上にパスワードおいてある状態でセキュリティ的にどうなの……。

と思いました。それは全部動作が出来てから考えよう。

 

最初変なことを疑って大分遠回りしたけど、とりあえず動いてよかったー。