0

ajax .POST を使用して、true/false を返すと思われる php スクリプトを実行しています。スクリプトで「echo」を使用して true/false を返します。しかし、結果を JS に戻した後、受信したテキストを IF ステートメントで比較しますが、決して機能しません! ここに私のコードがあります

 $.ajax({ url: 'admin_checkuser.php',
     data: {action: window.myId},
     type: 'post',
     success: function(output) {

if (output == "true"){

そして、これが呼び出されるphpスクリプトです

include_once('class.MySQL.php');

$userid = $_POST['action'];

$oMySQL = new MySQL();
$query = "Select * FROM videotable WHERE uid = '$userid'";
$oMySQL->ExecuteSQL($query);
$bb = $oMySQL->iRecords;
$aa = $oMySQL->aResult;


if ($bb == 0){
    $query = "INSERT INTO videotable VALUES ('','$userid','true')";
    $oMySQL->ExecuteSQL($query);
    echo 'true';
    exit();
}else{
    $sharing = mysql_result($aa,0,"share");
    echo $sharing;
    exit();
}

「アラート(出力)」を実行してtrue / falseを受け取るようにしましたが、常にtrue / falseが表示されるため、アラート(出力)がtrueを示している場合でもIFステートメントが失敗する理由が本当にわかりません

前もって感謝します!

4

3 に答える 3

2

私の経験では、ajax 応答の型を解析しようとすると、非常に信頼性が低くなる傾向があります。

そのため、私は (今) ajax データを返すためのサーバー側関数を作成するときはいつでも、自分で設定した応答 "標準" に完全に一致させ、応答タイプをajax メソッドを JSON に変換します。

そうすることで、エラーの処理がはるかに予測しやすくなります。

標準化された応答の例は次のとおりです。

$ajaxResponse = array(
  'data' => $someData,
  'result' => true,
  'message' => 'your yadayada was succesful',
  'timestamp' => time()
);
print json_encode($ajaxResponse);

そしてajaxでは、あなたの応答は次のようになります:

success: function( response ) {
   if(response.result) {
      alert(response.message);
   }
}
于 2012-05-14T23:20:08.783 に答える
1

これがあまり役に立たない場合は申し訳ありませんが、試してみることができます:

$.ajax({ url: 'admin_checkuser.php',
     data: {action: window.myId},
     type: 'post',
     dataType: 'json',
     success: function(output) {

if (output) { ... }

echo json_encode(true);

// echo json_encode($sharing);
于 2012-05-14T23:17:32.760 に答える
1

jQuery のドキュメントには、この呼び出しが返す内容の詳細が記載されています: http://api.jquery.com/jQuery.ajax/

成功(データ、テキストステータス、jqXHR)関数、配列

リクエストが成功した場合に呼び出される関数。この関数には 3 つの引数が渡されます。dataType パラメータに従ってフォーマットされた、サーバーから返されたデータ。ステータスを説明する文字列。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト。jQuery 1.5 の時点で、success 設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。これは Ajax イベントです。

AJAX 呼び出しから返されるデータが"true"テストの文字列であると期待しているように見えるので、それが合格しない場合は、この正確な文字列以外の何かが返されているに違いありません。

Firefox の Firebug の net タブを使用して、XHR リクエストを確認し、返された応答を調べて、それが予期したものと異なるかどうかを確認することをお勧めします。

于 2012-05-14T23:20:39.077 に答える