jquery来自from.submit和ajax的问题

时间:2011-05-21 14:41:50

标签: php jquery 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如果完整函数中的条件总是转到其他部分并显示警告('错误答案')

是否有人知道可能是什么问题。 ?在firebug控制台中,我确实看到从我的ajax返回的响应和响应值是“true”

2 个答案:

答案 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');
                    }
                });