我希望将从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文件正在运行。
答案 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来确定实际的字符串或警报输出是什么