从返回的数据ajax post创建变量

时间:2012-08-15 00:03:36

标签: javascript ajax

我希望将从ajax帖子返回的数据放入javascript变量中,然后我可以运行if语句来检查该变量是否等于true。但是,Firebug告诉我变量验证没有定义。如何在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 个答案:

答案 0 :(得分:1)

这是因为验证是在回调函数中创建的。此外,该变量在该函数外部不可见。

要对来自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
    }
});

答案 1 :(得分:1)

问题出在几个地方。 首先,如何在.php文件上输出数据。你应该返回JSON并在你的ajax请求上接受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();                                    
   }
});

答案 2 :(得分: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}         
}
);          

答案 3 :(得分:0)

-i不会对ajax使用j查询(我发现getdata更好但是回调变量需要传递给下一个函数 即。如果您要提醒(数据)作为回电,请在那里做if语句。

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