• ベストアンサー

XMLHttpRequestを利用してPHPへ値を渡したい

arenani_sorenaniの回答

回答No.3

連絡用にレスしておきます 結果を教えて下さい。 社会人一年目ですか、頑張ってください。 多分ですが あなたのソースでは2度リクエストを送信しているように見えます しかも同じ変数を、2度めのオブジェクトで上書きしてます。 その辺が原因かな・・ PHPの環境は手元にないのでASP.NETで確認しましたが 私の書いたソースでは少なくても送信はできるハズ?です。

merus
質問者

お礼

初めに、補足にレスを含めた内容を書き込みしたこと、お詫び申し 上げます。 PHPのプログラムは値を受け取り表示させるのみに書き換えしたもの test.php---------------- <?php //JavaScriptからPOSTされているか判断する var_dump($_POST); $time = $_POST['time']; //POSTされた中身を見る var_dump($time); print($time); ?> ---------------------- 共通関数とHTMLは頂いたソースをそのままインデントしただけの プログラムを用いています。 動作環境は PHPを動作させるWEB-SERVER:xampp xamppで利用している機能:Apache,mySQL OS:VISTA business ブラウザ:Sleipnir(IE),Firefox(Netscape) あまり関係は無いと思いますが、参考になればと思い追記しました。 どうしてよいのかわからず、周りにJavaScriptやAjax等の言語や技術 を会得している方がいませんので、聞くに聞けず困り果てております。 リクエストが2か所あることについては不思議に思っていませんでした。 理由はPHPへ送信する為のリクエストと保存ファイルを読みだす為の リクエストは別々で、同じ原理で用途が違うのであればリクエストは いくつでも出せるものだと思っていました。 (プログラムが可笑しいかもしれませんが) また、同じ変数名にしていたのはfunction名で切り分けされているので 1)PHPへ飛ばす、2)ファイルを表示 の1)の後に2)が呼ばれるので、初期化してくれるだろうと思い 初期化された後、次のリクエストを実行するだろうと思ったからです。 ご指摘通り、プログラムを書く上でまずいとは感じましたが…。 自分のプログラムを変数名を変えてみて試してみましたが相変わらず 空の状態でした。 頂いたソースを実行していたのですが、補足に記述したとおりの結果 になりました。

merus
質問者

補足

エール、有難う御座います! 昨日教えて頂いたソースを実行してみたところ、IEベースのブラウザ(スレイプニル) ではPHPまでは到達しているみたいですが、PHPのソースにvar_dump($_POST)してみますと array(0) { }の様に空を示されました。 また、focus()が問題なのかは定かではありませんが、Firefoxでは未入力チェックの時点で チェックがされず、PHPまで到達できていないのかinnerHTML部に何も表示されませんでした。 もちろんarray(0) { }の様な表示もされていませんでした。 2時間程度調べてみたのですが、なかなか打開策がなく、良いお返事を書くことができず 申し訳なく思います。 技術不足な私ではありますが、頭が一点集中気味で他の打開策を講じられる程 知識も無く、ご迷惑だとは思いますがもうしばらくお力添えを頂けないでしょうか

関連するQ&A

  • PHPがHTMLのformの値を受け取らない

    状況: ファイルアップロードを作成しようとしたところPHPがHTMLのformのsubmitした物を受け取らない。 しかしHTML側にjavascriptを読み込ませ XMLHttpRequest によってsendすると受け取れる。 環境: apache 2.2.4 php 5.2.3 ------------HTML <html><body> <form action="test.php" enctype="multipart/form-data"> <input type="text" id="name"> <input type="file" id="file"> </form> </body></html> ------------PHP <?php header('Content-type: text/plain; charset=UTF-8'); print "\$_POST:";var_dump($_POST);print "\n"; print "\$_FILES:";var_dump($_FILES);print "\n"; ?> ------------結果 $_POST:array(0) { } $_FILES:array(0) { } ------------ 原因がphp.iniなのか、httpd.confなのか、はたまたそれ以外に原因があるのかがさっぱり判らず質問しました。 どうやったらHTMLのformの値をPHPで受け取れますか?

  • PHPからjavascriptへGETで値を渡すとき

    初歩的な質問で失礼いたします。 PHPからjavascriptへGETで値を渡すときにマルチバイト文字が文字化けしてしまいます。 javascriptのjQueryというライブラリを利用しています。 具体的には、 -------------- test.js -------------- var url = 'test.php?code=' + code; $.get(url, function(data){ alert(data); } -------------------------------------- --------------- test.php ------------- $input = $_GET['code'];  ・・・mysqlの処理・・・ echo $output; --------------------------------------- という処理をしています。 test.js → test.phpへ渡す値はマルチバイトではないので問題ないのですが、 test.php → test.jsへ返す値はマルチバイトで文字化けしてしまいます。 php側でrawurlencode関数でエンコードしてから、javascript側でdecodeURI関数を使用してデコードしたのですが、うまくデコードできませんでした。 恐らくデコードの仕方が悪いんだと思うんですが。。。 分かりにくい説明で恐縮ではございますが、ご回答をお願いいたします。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでレイティングバーの値を取得

    下記のようなJQuery スクリプトにおいて、 レイティングバーの値を、PHP変数に取得するには どうすればいいのでしょうか。ご指導お願い致します。 ちなみに、 $manzokudo = $_POST['rating']; var_dump($manzokudo); で、ダンプしたところ、中身がNULLでした。 【detail.php】 <link rel="stylesheet" type="text/css" href="jquery.rating.css"> <script type="text/javascript" src="jquery-2.1.3.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script> <script type="text/javascript" src="jquery.rating.js"></script> <script type="text/javascript"> $(function () { // レーティングバーを有効化 $('.starbar').rating({ cancel: '消去', // 「キャンセル」ボタンのテキスト // ★アイコンをクリックした時の処理 callback: function(value){ // detail.phpに対してレイティングバーの値を送信 $.post( 'detail.php', { rating: value }, function(){ window.alert('「' + value + '」をつけました。'); } ); } }); }); </script> </head> <body> <?php $_POST[] ?> </body> </html>

  • phpに値が送られない

    PHP側に値が送られなくて困ってます!! どなたか助けて頂けないでしょうか $(function() { $('a') .click(function() { var id = this.id; alert(id); $.ajax({ type: 'POST', dataType:'json', url:'editor_text.php', data:{ item:id }, success:function(data) { alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); }); });

    • ベストアンサー
    • AJAX
  • PHPの質問:フォームから受け取った値がNULL

    あまりに基本的過ぎるのか、検索しても、参考書を読んでも分かりませんでした。 ■やりたいこと index.htmlのフォームで入力した値を、output.phpで変数$nameとして受け取りたい。 (この後$nameをstrstr関数の引数として使いたい) ■作ったソース 【index.html】 <form action="output.php" method="post"> <input type="text" name="name"> <input type="submit" value="入力"> </form> 【output.php】 <?php $name = $_POST['name']; var_dump($name); ?> ■困っていること output.phpをブラウザで開くと、以下の通りに表示されます。 string(4) "abcf" しかし、ブラウザで「ソースを表示」すると、[NULL]となってしまいます この変数$nameは、strstr関数の引数として使いたいのですが、 そこで値がNULLのため、上手くいきません。 ■お聞きしたいこと (1)フォームから受け取った値をvar_dump()を使い、ブラウザのソース表示をすると NULLになるのは、そういった仕様なのなのでしょうか? (2)フォームからの値を変数に格納する際、何か注意する点があるのでしょうか? 何か根本的なことから理解していないようでお恥ずかしいのですが、 教えて頂けると大変助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPの処理結果をjavascriptで利用する方法

    既に似たような質問も出ていそうで恐縮ですが(一通り目を通したですが、目的とするものは見つけられませんでした)、 PHPとjavascriptのやりとりについて教えていただければ幸いです。 データをフォームなどから受け取る→サーバー側(php)で処理→ 処理した結果の変数をjavascript用の変数として扱うといったこと がしたいのですが、うまくできません。 実際には以下のような形で書いて失敗してしまいました。。。 /*xxx.php*/ <html> <head> <?php $result = $_POST["sentence"]; ?> <script language="javascript"> result = "<?=$result?>"; </script> <script src="xxx.js" type="text/javascript"language="javascript"></script> </head> <body> <form id="sample"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> </body> </html> /*xxx.js*/ /*xxx.js*/ window.onload = function(){ document.getElementById("sample").onsubmit = function() { var req = createHttpRequest(); req.onreadystatechange = function(){ if(req.readyState==4 && req.status == 200){ alert(result); //PHPの結果を待った後を想定した何らかの処理      //ここでresultを使いたいが、サーバー側への送信前      //の値が入っているだけでonsubmitが反映されていない。 } } req.open("POST","./xxx.php",false); //<-formでくくられた<input type="text">等の部分は反映されない。 req.send(""); } } function createHttpRequest(){ if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window.ActiveObject){ try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { return null; } } } } 私なりに調べたところ 1.PHPとjavascriptは別の所で動作しているので受け渡しは基本不可能 2.PHP側で動的に書き出すことで見せかけることはできる。 var test = <?=$test?>等 3.XmlHttpRequestでphpの処理を結果を待って、変数を利用しようと思ったが、 <form id="form"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> といった場合に$_POST["sentence"]に値を入れる方法が不明。 また、 multipart/form-dataによる送信など方法が複雑。 responseTextには<html>から</html>まで格納されてしまった。 処理項目ごとに表示用に別にPHPファイル作成だと困る。 4.<form action = "xxx.php" onsubmit=関数名>とすると、 onsubmitで指定した関数が先に呼び出されてから、 xxx.phpの実行が行われるので、サーバー処理を待たずに javascript側が実行されてしまう。 といったことだけは分かりました。 しかし、どのように変更すればうまくいく(もしくは見せかける) ようになるのかがさっぱり分からなかったため、 質問させていただきました。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP5で 定義されているINFの実際の値を知りたいのですが

    PHP5で 定義されているINFの実際の値を知りたいのですが var_dump( constant("INF") ); var_dump( INF ); すべて以下のようになります。 float(INF) float(INF) どうすれば値を知ることはできますか? このような定義済み定数の一覧と実際の値が知りたいです。

    • ベストアンサー
    • PHP
  • phpから値をとってきて変数に格納するには?

    phpから値をとってきて変数に格納するにはどうすればいいのでしょう? ちなみにjavascriptはほとんどさわったことのない初心者です。 やりたいことを具体的に説明します。 p.php 「 <?php yy = "test string"; //?(1) ?> 」 js.html 「 <script language="javascript"> var xx; //?(2) </script> 」 最終的に、php内の変数「yy」の内容をjavascriptの変数「xx」にいれたいのです。 よろしくお願いします。

  • PHP_INT_MAXを超える値の出力について

    下記の「希望」の値を出力させていのですが、 PHP_INT_MAXを超える値が指数表記となってしまいます。 PHPのコンパイル時に、BMP、BCMATHなどを有効にすれば希望の出力を得る関数が使えるようになるのですが、都合によりリコンパイルができません。 何か他の方法で希望の出力を得ることはできないのでしょうか。 <?php print("値は".(string)353108774858342429); // 希望 =>値は353108774858342429 // 実際 => 値は3.5310877485834E+17 var_dump(PHP_INT_MAX); // int(2147483647)

    • ベストアンサー
    • PHP
  • header.locationで、画面遷移、GET

    送り側(file_upload.php) header("Location: bbs_test.php?photo=$upfilename"); 受け側(bbs_test.php) $photo = $_GET['photo']; var_dump($photo); を実行すると、var_dump()の値がNULLになってしまい、 $upfilenameが、GET渡しできません。 ちなみに、$photo = $_GET['photo']; var_dump($photo); の、この2文は、 function()disprecords{ } という関数の中にあるのですが、 なぜ、var_dump($photo); の値がNULLになってしまうのか、どうすれば、 $upfilnameの値を渡せるのか、ご指導いただきたいです。 よろしくお願いします。

    • 締切済み
    • PHP