下面是我正在使用的代码
$(document).ready(function(){
$("form").submit(function(event) {
event.preventDefault();
var val = $("#captcha_text").val();
$.ajax({
url: 'checkAnswer.php',
type: 'POST',
dataType: 'text',
data: {
answer: val
},
complete: function(data)
{
console.log(data);
if($.trim(data) == "true")
$("form")[0].submit();
else
alert('Wrong Answer');
}
});
});
});
checkAnswer.php只有这一行
echo "true";
我不知道为什么javascript如果完整函数中的条件总是转到其他部分并显示警告('错误答案')
是否有人知道可能是什么问题。 ?在firebug控制台中,我确实看到从我的ajax返回的响应和响应值是“true”
答案 0 :(得分:2)
使用:
if($.trim(data.responseText) == "true")
完成接收作为第一个参数 jqXHR (扩展的XMLHTTP-Request-object)而不是数据,具体取决于dataType。
或使用成功而非完整
答案 1 :(得分:2)
我认为你必须这样做:
$.ajax({
url: 'test.php',
type: 'POST',
dataType: 'text',
data: {
answer: val
},
complete: function(jqXHR, textStatus)
{ //it returns an jqXHR object
if($.trim(jqXHR.responseText) == "true")
$("form")[0].submit();
else
alert('Wrong Answer');
}
});
这是因为jQuery返回一个jqXHR对象外观here以供参考。
编辑你也可以试试这个:
$.ajax({
url: 'test.php',
type: 'POST',
dataType: 'text',
data: {
answer: val
},
success: function(data)
{
if($.trim(data) == "true")
alert('ok');
else
alert('Wrong Answer');
}
});