jquery from.submit 和 ajax 的问题


problem with jquery from.submit and ajax

下面是我正在使用的代码

$(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');
                    }
                });