6

私は AJAX を処理するために jQuery を使用するのは初めてで、基本を理解するための基本的なスクリプトを作成しました。現在、同じファイルに AJAX リクエストを POST しています。その AJAX 呼び出しの結果に基づいて追加の処理を行いたいと考えています。

これが私のコードです:

**/*convertNum.php*/**

$num = $_POST['json'];
if (isset($num))
 echo $num['number'] * 2;
?>

<!DOCTYPE html>
<html>
 <head>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
 <style type="text/css">
 td {border:none;}

 </style>
 </head>
 <body>

 <table width="800" border="1">
 <tr>
 <td align="center">Number To Send<br /><input type="text" id="numSend" size="40%" style="border:2px solid black;"></td>
 <td align="center">Number Returned<br /><input type="text" id="numReturn" size="40%" readonly></td>
 </tr>

 <tr><td align="center" colspan="4"><input type="button" value="Get Number" id="getNum" /></td></tr>
 </table>



 <script>
 $(document).ready(function () {
 $('#getNum').click(function () {
 var $numSent = $('#numSend').val();
 var json = {"number":$numSent};

 $.post("convertNum.php", {"json": json}).done(function (data) 
 {
 alert(data);
 }
 );

 });
 });
 </script>
 </body>
</html>

番号「2」を送信した場合の応答は次のとおりです。

4

<!DOCTYPE html>

<html>

<head>

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

 <style type="text/css">

td {border:none;}

</style>

</head>

<body>



<table width="800" border="1">

 <tr>

 <td align="center">Number To Send<br /><input type="text" id="numSend" size="40%" style="border:2px solid black;"></td>

 <td align="center">Number Returned<br /><input type="text" id="numReturn" size="40%" readonly></td>

 </tr>

 <tr><td align="center" colspan="4"><input type="button" value="Get Number" id="getNum" /></td></tr>

</table>

<script>

$(document).ready(function () {

 $('#getNum').click(function () {

 var $numSent = $('#numSend').val();

 var json = {"number":$numSent};

 $.post("convertNum.php", {"json": json}).done(function (data) 

 {

 alert(data);

 }

 );



 });

});

</script>
</body>
</html>

明らかに、私は数字「4」を受け取って使用することにのみ関心があるため、私の質問:返されるデータを正確に指定する最良の方法は何ですか?

私が持っていたいくつかの考え:

  • すべての HTML を if ステートメント内にラップします (つまり、$num が設定されている場合は HTML を出力しません。それ以外の場合は HTML を出力します)。
  • AJAX 呼び出しを受信するための別の PHP スクリプトのセットアップ: これは私が最初に行ったことであり、問​​題なく動作します。しかし、私はすべてを 1 つのファイル内に保持することに興味があり、そのための可能な方法を探りたいと考えていました。

これを行うエレガントな方法があると確信しています。ご提案ありがとうございます。

4

5 に答える 5

2

この投稿は、あなたが見ているものの 1 つの側面、つまりアラート ボックスにページ全体がエコーしているという答えだと思います。

次に、AJAX の基本を理解するための良い記事をいくつか紹介します。

簡単な例

より複雑な例

ドロップダウン 1 での選択に基づいてドロップダウン 2 を設定します

于 2013-07-31T15:41:34.860 に答える
1

die();本当に同じページに保持したい場合は、番号をエコーし​​た後に追加できます。これにより、スクリプトの実行が終了します。if ステートメントを括弧で囲むことを忘れないでください。

if (isset($num)) {
  echo $num['number'] * 2;
  die();
}

ただし、これは最も洗練されたソリューションではありません。

于 2013-07-31T14:55:07.160 に答える
1

*より良いアプローチは、このようなものを別のファイルに保持することです。これにより、特に適切な命名変換を使用する場合に、読みやすく、理解しやすくなります。

これは悪い手続き型のアプローチですが、ここに行きます:):

<?php
$num = $_POST['json'];
if (isset($num))
 echo ($num['number'] * 2);
 die();
?>

またはさらに良い:

<?php
$num = $_POST['json'];
if (isset($num))
 die($num['number'] * 2); //In case of error you could put them in brackets
?>

PS の代わりにdie();を使用できますがexit();、どちらもほとんど同じことを行います:さらなる実行の終了

于 2013-07-31T14:52:30.520 に答える
0

これがどれほど効率的かはわかりませんが、次のようなことができます。

<?php
 /*convertNum.php*/
 $num = isset($_POST['json']) ? $_POST['json'] : NULL; //you have errors in this line
 if (!is_null($num)){
  echo $num['number'] * 2;
  exit(); //exit from script
 }
?>
于 2013-07-31T14:56:04.927 に答える