2013-07-17 64 views
4

我有一个成功的功能在我的AJAX,它返回一个Python脚本,可以是“成功”或“空”的响应文本。 现在我想要在成功函数中放置一个if循环,但if循环不起作用。我从我的Python脚本中获取正确的数据,因为我的警报声明工作正常并且正在打印“成功”。不过,这并不进入ifloopjquery:如果语句不工作在AJAX成功函数

我已经尝试了一堆东西,但控制不进入ifloop,任何人都可以告诉我什么,我做错了:

submitHandler: function (form) { 

       $.ajax({ 
        type: 'post', 
        url: '/cgi-bin/getdataworld.py', 
        data: $(form).serialize(), 

        success: function(data) { 
          //document.write(result); 
          console.log("result is "+data); 
          alert(data); 

          if(data === "SUCCESS"){ 
          window.location = 'index.html'; 
           } 
          else{ 
           alert("NO DATA PRESENT"); 
           } 


        }, 

        error: function (responseData) { 
       console.log('Ajax request not recieved!'); 
      } 

       }); 

       return false; 
      } 
+0

“if语句”。这不是一个循环。另外,你确定“SUCCESS”周围没有空白吗?警报并不总是显示空白,或者很难看清。 –

回答

8

这意味着您回复的内容不是"SUCCESS"。它可能在它之前或之后有一个换行符或其他空格,可能不止一个。

也许:

if (/^\s*SUCCESS\s*$/.test(data)) { 
    // Success 
} 

或者使用jQuery的$.trim

if ($.trim(data) === "SUCCESS") { 
    // Success 
} 

另外要确保你不"Success""success"回复,因为字符串比较是区分大小写的。

如果你不知道:

if (/^\s*SUCCESS\s*$/i.test(data)) { 
    // Success 
} 

if ($.trim(data).toUpperCase() === "SUCCESS") { 
    // Success 
} 
+0

可能看错了,但我觉得他没有进入IF或ELSE块。 – adam

+0

omg !!非常感谢你...现在它的作品:) –

+0

@wanab_geek:LOL!很高兴这有助于。 –

0

检查,如果你没有前/任何额外空间 “SUCCESS”

后也试图改变

if(data === "SUCCESS"){ 

if(data == "SUCCESS"){ 
+0

'=='与'==='对“SUCCESS”是否等于“\ nSUCCESS”没有任何影响。 –

+0

你的意思是$ .trim(data)我认为 –

+0

TJ:这是真的 - 我已经说过可能的空格问题 - 第二个音符是关于'==='在这里并不是真的需要 –

-1
submitHandler: function (form) { 

      $.ajax({ 
       type: 'post', 
       url: '/cgi-bin/getdataworld.py', 
       data: $(form).serialize(), 

       success: function(data1) { 
         //document.write(result); 
         console.log("result is "+data1); 
         alert(data1); 

         if(data1 == "SUCCESS"){ 
         window.location = 'index.html'; 
          } 
         else{ 
          alert("NO DATA PRESENT"); 
          } 


       }, 

       error: function (responseData) { 
      console.log('Ajax rariequest not recieved!'); 
     } 

      }); 

      return false; 
     } 

试试这个这里两件事情,我注意到一个是===在if语句和其他您所使用的数据作为变量在某些浏览器中发生冲突