• ベストアンサー

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

arenani_sorenaniの回答

回答No.2

かなりお困りのようなので・・・ 以下のソースで送信を確認してください。 phpの方は省きますがtest用に単純に受け取ったデータを返すように書き換えてください 返答はDIVのinnerHTMLになりますので<HTML><BODY>とかは要らないですよ・・・ 外部js xmlhttp.js (*注 手を加えてます) ----------------------------------------------------------- // HTTP通信用、共通関数 function createXMLHttpRequest(Func,arg1){ var XMLhttpObject = null; try{ XMLhttpObject = new XMLHttpRequest(); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ return null; } } } if (XMLhttpObject) { XMLhttpObject.onreadystatechange = function(){ if ((httpObj.readyState == 4) && (httpObj.status == 200)){ eval(Func+"("+arg1+")"); } } } return XMLhttpObject; } // document.getElementById function $(tagId,parantObj){ if(parantObj){ return parantObj.document.getElementById(tagId); }else{ return window.document.getElementById(tagId); } } -------------------------------------------------------------- test.html ------------------------------------------------------------- <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html;charset=UTF-8"> <TITLE>登録画面</TITLE> <script type="text/javascript" src="xmlhttp.js"></script> <script type="text/javascript"> <!-- function inputCheck(){ if($("time").value==""){ alert("期限が入力されていません。"); $("time").focus(); }else{ httpObj=createXMLHttpRequest("displayData"); if(httpObj){ textData=$("time").value; sendData=""; sendData+="time="+encodeURI(textData); httpObj.open("POST","test.php",true); httpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); httpObj.send(sendData); $("result").innerHTML="<b>Loading...</b>"; }else{ alert("通信できません"); } } return false; } function displayData(){ $("result").innerHTML = httpObj.responseText; } //--> </script> </HEAD> <BODY> <form onSubmit="return inputCheck();"> 期限:<input type = "text" name = "time"> <input type = "submit" value = "登録"> </form> <hr> <div id="result"></div> </BODY> </HTML> ---------------------------------------------------------------

merus
質問者

お礼

ソース修正、ソースの指摘などアドバイス有難う御座います。 現在、自宅用のPCで閲覧させて頂いたのですが、自宅のPCでは alphaなどが動作しない程、貧弱なPCで確認を行えなかったので 月曜日に実際の確認をさせて頂きます。 ソースを拝見させて頂きましたが、 >DIVのinnerHTMLになりますので<HTML><BODY>とかは要らないですよ・・・ 申し訳なく思います。 確認していくなかで、自ソースにそのまま記述したままになってたようです。 彼是どのように考えて作ったのか、どのように確認していたのかを 理解してもらえるかな?と思い、そのままにしていました。 指摘に感謝するとともに、次の段階での質問にも役立てたく思います! 共通関数の方は、怪しいですが分かりかけてきました! test.js部分の入力チェックのところをfocusに変える方法は submitをクリックされると、エラー処理の場合でも処理が流れて しまうのを防ぐためなのかな?と解釈させてもらい、勉強になりました。 自分のプログラムではfunctionを多様して1つ1つの処理を自分に分かりやすく していたのですが、無駄も多いなと熟熟思いました。 大掛かりな処理をしていく上で、ある程度纏める努力もできるよう 頑張っていきたいと思います。 確認しでき次第、改めてお礼申し上げます。

関連する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