- 締切済み
JavaScriptでリクエストを飛ばす方法を教えて下さい。
下記内容で画像の切り替えを教えて頂いたのですがこれに 画像をクリックした時にサーバー側にクリックした事を分るために URL(リクエスト)をバックグラウンド(非同期かな)で渡したいと 思います。 どうしたら良いでしょうか?? ブラウザーの画面は画像をクリックしても切り替わりません。 誠に恐縮ですが下記ソースに追加して教えて頂ければと思います。 何卒よろしくお願いします。 <html> <head> <script type="text/javascript"><!-- function clickImg( img ) { var arraySrc = img.src.split( '/' ); var src = arraySrc[arraySrc.length - 1]; if( src == "a.jpg" ) { document.cookie = "click=1;"; img.src = "b.jpg"; img.style.cursor = "default"; } } function init() { if( document.cookie ) { var img = document.getElementById( "img1" ); document.getElementById( "img1" ).src = "b.jpg"; img.style.cursor = "default"; } } //--></script> </head> <body onload="init();"> <img src="a.jpg" id="img1" style="cursor:pointer;" onclick="clickImg(this);" /> </body> </html>
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> たぶん下記サイトの内容を組み合わせるのだと思いますがうまくいきません。 組み合わせの方法は、以下のページから http://f32.aaa.livedoor.jp/~azusa/index.php?t=ajax&p=xmltodom > 例:ページビューランキング のview sampleを見てみて下さい。 window.onloadで実行している関数をimage.onclickで実行してください。 サーバーにデータを渡したら終わり、というのなら、 onreadystatechangeイベントハンドラのセット、fXmltoDom()、fCreateRanking()を全部消すくらいでも良いかも知れません。 fXmltoDom()がXMLファイルの分解と解析 fCreateRanking()が分解したXMLファイルの表示を行っています。 document['xmlObject']への代入は「え?」と思うところですが、、、
- fujillin
- ベストアンサー率61% (1594/2576)
こんにちは 参考にされている「PHP & JavaScript Room」は大変親切に解説されていますので、これ以上の説明はできません。 ちゃんとソースもサブルーチン化されて表示されていますし、各ブラウザにも対応しているようですので、そのまま利用してなんの問題もないと思われます。 一応、試してみましたが(サーバ側はperlで)、問題なく動作しました。 >クリックした情報を非同期でサーバにリクエストをしたいと思っております。 サブルーチンになっているので、クリックした時の処理にtestXmlHttpRequestObj()の呼び出しを一行追加すれば良いだけでは?
- fujillin
- ベストアンサー率61% (1594/2576)
>URL(リクエスト)をバックグラウンド(非同期かな)で渡したいと思います。 ご質問の意味がわかりかねます。 実験してみましたが、問題なく動くようですよ。 もっともクッキーがあれば最初からb.jpegが表示されるようになっているみたいですが、これは多分わざわざそうしているのですよね? bodyタグの onload以下を消せば、毎回a.jpgが表示されて、クリックすればb.jpgになるはずですけど。 でもそれだけだったら、onclickのあとにthis.src="b.jpg";this.style.cursor="default";だけで済んじゃいますね。 関係ありませんが、多分ゴミがどこかで入ったらしいので・・・ 25行目最後の />の「/」は不要と思われます。
お礼
ご回答ありがとうございます。 質問の意図が分りづらく申し訳ありません。 画像をクリックしたデータをサーバ側で認識をしたいと考えております。 phpで処理したいと思っています。 たぶん下記サイトの内容を組み合わせるのだと思いますがうまくいきません。 http://f32.aaa.livedoor.jp/~azusa/index.php?t=ajax&p=xmlhttp#a_send ざっくりといいますとクリックした情報を非同期でサーバにリクエストを したいと思っております。 宜しくお願いします。
補足
説明不足で大変申し訳ありません。 単純に書きますとクリックした情報をサーバに飛ばしたい つまりリクエストを飛ばすだけです。 その内容をJavaScriptのソース内に、埋め込みたいです。 飛ばす内容はhttp://www.hogehoge.co.jp/?id=でこのリクエスト がサーバに来たらサーバ側でプログラムを動きます。 プログラムはできているのでクリックしたときにこの内容 (http://www.hogehoge.co.jp/?id=)を飛ばす方法を知りたいです。 よろしくお願いします。
お礼
回答ありがとうございます。 ご指摘通りたぶんtestXmlHttpRequestObj()を追加すればうまくいくのではないかと思っていますがそこが根本的に分っていません。 どこに追加すれば良いか教えて頂けるとありがたいです。 宜しくお願いします。