下面是我正在使用的代码
$(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 if 条件总是转到 else 部分并显示警报("错误答案")
有谁知道可能是什么问题。 ?在Firebug控制台中,我确实看到从我的ajax返回的响应,并且响应值为"true"
使用:
if($.trim(data.responseText) == "true")
complete作为第一个参数jqXHR(一个扩展的XMLHTTP-Request-object)接收,而不是取决于数据类型的数据。
或者使用成功而不是完成
好吧,
我认为你必须这样做:
$.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 对象,请在此处查找以供参考。
编辑 你也可以试试这个:
$.ajax({
url: 'test.php',
type: 'POST',
dataType: 'text',
data: {
answer: val
},
success: function(data)
{
if($.trim(data) == "true")
alert('ok');
else
alert('Wrong Answer');
}
});