2010-12-23 214 views
4

根據GET請求的結果,是否有退出函數的方法。ajax調用中的jquery退出函數

例如,在下面的功能,hi,如果GET結果data,其中data === '1',我想退出該功能。

function hi() { 
    $.ajax({ 
     url: "/shop/haveItem", 
     type: "GET", 
     success: function (data) { 
      if (data == '1') { 
       // exit hi() function 
      } 
     } 
    }); 
    // some executable code when data is not '1' 
} 

我該如何去做到這一點?

回答

8

我認爲解決的辦法可以是這樣的

function hi() { 
    $.ajax({ 
     url: "/shop/haveItem", 
     type: "GET", 
     success: function (data) { 
      if (data == '1') { 
       ifData1(); 
      } else { 
       ifDataNot1() 
      } 
     } 
    }); 
} 
function ifData1() { /* etc */ } 
function ifDataNot1() { /* etc */ } 

如果你有一個Ajax功能,你應該總是與回調函數工作。如果你使ajax函數同步,那麼在ajax調用期間瀏覽器將被阻塞。這意味着應用程序在通話期間將保持不響應。

+0

你的代碼也使用「async:false」,:) 請編輯它。 – 2010-12-23 06:33:40

0

你可以做的一件事是有一個標誌變量。取決於您是否要退出,將它分配給true或false。

function hi() 
{ 
var flag=false;  
$.ajax({ 
      url: "/shop/haveItem", 
      type: "GET", 
      async:false, 
      success: function(data){ 
       if(data == '1') 
        flag=true; 
      } 
     }); 
if (flag) return; 
    //some executable code when data is not '1' 
    ... 
} 
+1

製作ajax調用`asynch`可能不是最好的解決方案。它會阻止應用程序的持續時間爲ajax調用 – 2010-12-23 06:23:53

+0

除非async爲false,否則falg變量不能捕獲ajax返回值。但我也想我最好找到另一個解決方案 – 2010-12-24 02:54:39

0

創建一個全局標誌變量我認爲最好。測試和工作!

window.flag = []; 

function hi() 
{ 
    $.ajax({ 
     url: "/shop/haveItem", 
     type: "GET", 
     async:false, 
     success: function(data){ 
      if(data == '1') 
       flag = true; 
     } 
    }); 

    if (flag) { 
     return false; 
    } 


//some executable code when data is not '1' 
... 
} 
1

您應該能夠返回false來模擬「退出」。

function hi() 
{ 
    $.ajax({ 
      url: "/shop/haveItem", 
      type: "GET", 
      async:false, 
      success: function(data){ 
       if(data == '1') 
        return false 
      } 
     }); 

    //some executable code when data is not '1' 
    ... 
}