0

ajax の投稿から返されたデータを JavaScript 変数に入れ、その変数が true に等しいかどうかをチェックする if ステートメントを実行できるようにします。ただし、Firebug は、変数 verify が定義されていないと言っています。データを正しく検証するように設定するには、ajax投稿内に関数をどのように記述すればよいですか? コードは以下です。

$.post('ajax_file.php', 
{
user_id: user_id,    
band_term: band_term
}, function (data) {
var verify = data;              

if (verify == 'true') 

   {

   $('#request_form').hide();                  

   $('#where_to_go').hide();                            

   $('#change_form').show();                                    

}});

ajax ファイルは、成功すると true を返し、失敗すると false を返します。

if (mysql_query($sql) == true)

{ echo 'true';} else {echo 'false';}

Firebug は、ajax ファイルが文字列 true で返されることを示しているので、ajax ファイルが機能していることがわかります。

4

4 に答える 4

1

問題はいくつかの場所にあります。まず、.php ファイルにデータを出力する方法。JSONを返し、ajaxリクエストでJSONを受け入れる必要があります。この例を見てください:

<?php
    $variable = array("stat" => true, "data" => array(10, 10));
    print_r(JSON_Encode($variable));
?>

それはこれを出力します:

{"stat":true,"data":[10,10]}

次に、yout JS で次のようにします。

$.post('ajax_file.php', {
   user_id: user_id,    
   band_term: band_term
}, function (data) {
   //Data is the whole object that was on the response. Since it's a JSON string, you need to parse it back to an object.

   data = JSON.parse(data);

   if (data.stat === true){
      $('#request_form').hide();                  
      $('#where_to_go').hide();                            
      $('#change_form').show();                                    
   }
});
于 2012-08-20T02:29:56.027 に答える
1

これは、コールバック関数で verify が作成されたためです。また、その変数はその関数の外では見えません。

AJAX 呼び出しから返されたデータを操作するには、コールバック関数で実行します。

$.post('ajax.php', {
    user_id: user_id,
    term: term
}, function (data) {
    var verify = data;      //assuming data is just true or false
    if (verify === 'true') {
        unnecessary code
    }
});
于 2012-08-15T00:05:32.257 に答える
0

-iはajaxにjクエリを使用しません(getdataの方が優れていることがわかりましたが、コールバック変数を次の関数に渡す必要があります。つまり、コールバックとしてアラート(データ)を行う場合は、そこでifステートメントを実行します.

また、私は同様の問題に遭遇していました。PHP 応答で 1 や 0 などの数字を使用すると、多くの場合に役立ちました。js を使用して、実際の文字列またはアラート出力がどうなるかを判断しました。

于 2012-08-20T00:17:38.943 に答える
0

変数がコールバック関数内で定義されているため、ドキュメントのスコープと一致しません。

実際に機能させるには、次のようにスクリプトの最初の任意の場所に定義するだけです。

var verify;



$.post('ajax.php', 
{
user_id: user_id,
term: term
}, 
function (data) 
{
    verify = data;    // then also remove the word var from your code here.  

       if (verify == 'true') 
       {unnecessary code}         
}
);          
于 2012-08-15T00:31:49.653 に答える