2013-07-17 63 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語句和其他您所使用的數據作爲變量在某些瀏覽器中發生衝突