0

我希望将从 ajax 帖子返回的数据放入 javascript 变量中,然后我可以在其中运行 if 语句检查该变量是否等于 true。但是,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

这是因为 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 回答
1

问题出在几个地方。首先,如何在 .php 文件中输出数据。您应该在 ajax 请求上返回 JSON 并接受 JSON。看这个例子:

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

这将输出:

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

然后在你的 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 回答
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 回答
0

-i 不会对 ajax 使用 j 查询(我发现 getdata 更好,但回调变量需要传递给下一个函数,即。如果您要将 alert(data) 作为回调,请在此处执行 if 语句。

我也遇到了类似的问题。在我的 php 响应中使用诸如 1 或 0 之类的数字有很大帮助,我只是使用 js 来确定实际的字符串或警报输出是什么

于 2012-08-20T00:17:38.943 回答