2011-05-21 137 views
0
下面

是代码我使用问题与jQuery from.submit和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和响应值回是“真”

+1

设定具体的数据类型的属性为“text”,看看会发生什么。 – Bora 2011-05-21 14:48:42

+0

我还没有工作..我会得到抑郁症患者与jquery我认为 – 2011-05-21 14:53:08

+0

你试过skippink trim()函数? – 2011-05-21 14:57:56

回答

2

使用:

if($.trim(data.responseText) == "true") 

完全接收的第一个参数jqXHR(扩展XMLHTTP请求对象)而不是根据数据类型的数据

或者使用成功,而不是完整的

+0

谢谢医生,但仍然不工作 – 2011-05-21 15:16:37

+0

“仍然无法正常工作”是不足以提供进一步帮助的信息。 – 2011-05-21 15:18:07

+0

非常感谢我坚持了6个小时。我把它从完整的类型改成了现在的成功。有一个可爱的生活冠军.. – 2011-05-21 15:31:12

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'); 
        } 
       }); 
+0

非常感谢冠军,但没有成功 – 2011-05-21 15:15:27

+0

我试了一下,它的工作。奇怪。你使用的是什么版本的jQuery? – 2011-05-21 15:19:03

+0

您是否使用firefox?如果您不建议您将它与firebug扩展一起使用:它非常适合调试这些问题 – 2011-05-21 15:20:46