ajax POST 経由で値を渡しますが、戻り値は空です
Ajax にアクセスするのは初めてなので、簡単な例で練習したいと思います
Index.php にはドロップダウン リストがあり、異なるクラスを選択して異なる学生情報を返します
コードは次のとおりです:
<?php //从数据库把班级名称取出来放入下拉列表中 mysql_connect("localhost","root","root") or die("数据库连接失败"); mysql_select_db("studentmanage") or die("数据库不存在"); $sql="select * from class"; $rs=mysql_query($sql); $info=array(); while($row=mysql_fetch_assoc($rs)){ $info[]=$row; }?><!doctype html><html> <head> <title>查询学生信息</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <style type="text/css"> </style> <script type="text/javascript"> var xmlhttprequest;; function getMessage(){ if(window.ActiveXObject){ xmlhttprequest=new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlhttprequest=new XMLHttpRequest(); } if(xmlhttprequest){ var url="result.php"; var cid=document.getElementById("class").value; var show=document.getElementById("info"); var data="class=cid"; xmlhttprequest.open("post",url,true); xmlhttprequest.setRequestHeader("content-type","application/x-www-form-urlencode"); xmlhttprequest.onreadystatechange=function(){ if(xmlhttprequest.readyState==4){ if(xmlhttprequest.status==200){ var info=xmlhttprequest.responseText; if(info==""){ show.value="你好,你查询的班级暂时还没有学生"; }else{ show.value=info; } } }else{ alert("error"); } } xmlhttprequest.send(data); } } </script> </head> <body> <div id="content"> <h1> 请选择班级: <select name="class" id="class" onchange="getMessage()"> <option value="" selected>choose class</option> <?php foreach($info as $v){?> <option value="<?php echo $v['cid'];?>"><?php echo $v['cname'];?></option> <?php }?> </select> </h1> <div id="info"></div> </div> </body></html>
result.php を通じてデータベースにクエリを実行し、学生の情報を返すコードは次のとおりです:
<?php //header("content-type:text/html;charset=utf-8"); header("Content-type:text/xml;charset=utf-8"); header("Cache-Control:no-cache"); $class=$_POST['class']; mysql_connect("localhost","root","root") or die("数据库连接失败"); mysql_select_db("studentmanage"); mysql_query("set names utf-8"); $sql="select * from student where cid='$class'"; //$sql="select * from student where cid=3"; $rs=mysql_query($sql); $info=array(); while($row=mysql_fetch_assoc($rs)){ $info[]=$row; } $result="<table><tr><td>学号</td><td>姓名</td><td>住址</td><td>班级</td></tr>"; foreach($info as $v){ $result.="<tr><td>{$v['sid']}</td><td>{$v['name']}</td><td>{$v['address']}</td><td>{$v['cid']}</td></tr>"; } $result.="</table>"; echo $result;?>
result.php だけをテストしましたが、データベースから対応する情報を取得できることは間違いありません。取得した情報をindex.phpに返すことはできません
問題を見つけるのを手伝ってください
ディスカッションに返信(解決策)
result.php
出力内容を直接返すことはできません。json_encodeを使用する必要があります。返されたデータを処理します
例: ルックアップ テーブル データが配列に入れられ、次に: echo json_encode($arr);
クエリが正常であっても、div の値を設定します。 div はビューに直接表示されないため、効果を見ることはできません。
必要なものは innerHTML である必要があります
result.php
出力コンテンツを直接返すことはできません。返されたデータを処理するには json_encode を使用する必要があります
例: ルックアップ テーブル内のデータは配列に入れられ、 echo json_encode($ arr);
ajax には 3 つの戻り形式がありますか?それぞれテキスト、xml、json です
ここではテキスト形式を使用していますが、これの何が問題なのかわかりません 少なくともコールバック関数に var show=document.getElementById("info"); を入れる必要があります。
to div 値を設定しますか? クエリが正常であっても、div の値はビューに直接表示されないため、効果はわかりません。
必要なものは innerHTML であるはずです
はい、その通りです (私の JS 基盤はあまり良くありません==)。あなたの言ったことに従って変更し、段階的にデバッグしました:
<?php //从数据库把班级名称取出来放入下拉列表中 mysql_connect("localhost","root","root") or die("数据库连接失败"); mysql_select_db("studentmanage") or die("数据库不存在"); $sql="select * from class"; $rs=mysql_query($sql); $info=array(); while($row=mysql_fetch_assoc($rs)){ $info[]=$row; }?><!doctype html><html> <head> <title>查询学生信息</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <style type="text/css"> </style> <script type="text/javascript"> var xmlhttprequest;; function getMessage(){ if(window.ActiveXObject){ xmlhttprequest=new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlhttprequest=new XMLHttpRequest(); } if(xmlhttprequest){ var url="result.php"; var cid=document.getElementById("class").value; //window.alert(cid); var show=document.getElementById("info"); //window.alert(show); var data="class="+cid; //window.alert(data); xmlhttprequest.open("post",url,true); xmlhttprequest.setRequestHeader("content-type","application/x-www-form-urlencode"); xmlhttprequest.onreadystatechange=function(){ if(xmlhttprequest.readyState==4){ if(xmlhttprequest.status==200){ var info=xmlhttprequest.responseText; if(info==""){ show.innerHTML="你好,你查询的班级暂时还没有学生"; }else{ show.innerHTML=info; } } }else{ window.alert("error"); } } xmlhttprequest.send(data); } } </script> </head> <body> <div id="content"> <h1> 请选择班级: <select name="class" id="class" onchange="getMessage()"> <option value="" selected>choose class</option> <?php foreach($info as $v){?> <option value="<?php echo $v['cid'];?>"><?php echo $v['cname'];?></option> <?php }?> </select> </h1> <div id="info">aaa</div> </div> </body></html>
Drop -down list 値はjs経由で取得されますが、window.alert(data)を使用してデバッグする場合は問題ありませんが、result.phpの$class=$_POST['class']を介して値を取得する場合は問題ありません。 file_put_contents("D:/WWW/PHPDemo/log.log",$class."rn",FILE_APPEND); を通じて $class の値を log.log ファイルに保存しているため、割り当てられていませんが、それを実行した後は、ファイルを開くと空であり、実行時に次のようなエラーが報告されます: Notice: Unknown Index: class in D:WWWdbDesignprojectresult.php on line
方法に何か問題があるかどうか尋ねたいです。私のajaxはPOSTを通じて値を転送しますか? ?
問題は、値が result.php に渡されないことです。なぜですか?
xmlhttprequest.setRequestHeader("Content-Type","application/x-www-form -urlencode") );
xmlhttprequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
最後に d を 1 つ減らしました
コード行を注意深く読んだと言えます。 =====
この種のエラーをデバッグできる JS デバッグ ツールがあるかどうかはわかりません。探すのにそれほど時間を費やす必要はありません。バグ。 。 。 。
プログラマーは油断しないで、お互い励まし合いましょう
jqueryを使ってみてはいかがでしょうか?
<?php //header("content-type:text/html;charset=utf-8"); header("Content-type:text/xml;charset=utf-8"); header("Cache-Control:no-cache"); $class=$_POST['class']; file_put_contents("D:/WWW/PHPDemo/log.log",$class."\r\n",FILE_APPEND); mysql_connect("localhost","root","root") or die("数据库连接失败"); mysql_select_db("studentmanage"); mysql_query("set names utf-8"); $sql="select * from student where cid='$class'"; //$sql="select * from student where cid=3"; $rs=mysql_query($sql); $info=array(); while($row=mysql_fetch_assoc($rs)){ $info[]=$row; } $result="<table><tr><td>学号</td><td>姓名</td><td>住址</td><td>班级</td></tr>"; foreach($info as $v){ $result.="<tr><td>{$v['sid']}</td><td>{$v['name']}</td><td>{$v['address']}</td><td>{$v['cid']}</td></tr>"; } $result.="</table>"; echo $result;?>
http://api.jquery.com/jQuery.post/
jquery を使ってみませんか?
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script><script type="text/javascript">var cid=document.getElementById("class").value;var show=document.getElementById("info");$.post("result.php", { class: cid }, function(info){ if(info==""){ show.innerHTML="你好,你查询的班级暂时还没有学生"; }else{ show.innerHTML=info; } },"text");</script>
http://api.jquery.com/jQuery.post/
js を始めたばかりですが、フレームワークを使用する前に、より良い js 基盤を構築したいと思っています。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
