AjaxでJavascriptからphpに値を渡す
今日はjavascriptからphpに値が渡されるというのを確認してました。
参考にしたのはこちら。
- 作者: 漆尾貴義
- 出版社/メーカー: 翔泳社
- 発売日: 2007/04/20
- メディア: 大型本
- 購入: 2人 クリック: 17回
- この商品を含むブログ (6件) を見る
他にもネットであちこち参考にさせていただいたりしてるけど、一冊ずつは紙の本がある状態が好き。入門のほうこそ紙が好き。
で、今日分かったこと。
Javascriptからphpにデータを渡すためにJavascriptでやることは、
- (任意のオブジェクト名、ここではxmlhttp) = new XMLHttpRequest();(IE6以前はxmlhttp = new ActiveXObject("Msxml2.XMLHTTP");らしい)でXMLHttpRequestオブジェクトを作る。
- xmlhttp.open("送信方式","データ送信先url",非同期(true)/同期(false),"(送信先urlのサーバーに接続するときの)ユーザー名","パスワード")で送信方式と送信先を指定。openは最初の二つ以外は省略可能。
- xmlhttp.setRequestHeaderで各種送信時の設定(キャッシュの利用など)を設定
(2,3についはGET,POSTで最低限必要な記述方法に差がある)
で、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上にパスワードおいてある状態でセキュリティ的にどうなの……。
と思いました。それは全部動作が出来てから考えよう。
最初変なことを疑って大分遠回りしたけど、とりあえず動いてよかったー。