2010-04-22 82 views
1
function checkauth(){ 
     jQuery.getJSON("https://stackoverflow.com/users/checkauthjson", null, function(xhr){ 
      if(xhr.success){ return true;}else{ return false;} 
      }); 
    } 

很明顯,這不起作用,但它說明了我想實現的目標。我希望checkauth返回一個對ajax服務器腳本進行檢查的值。jquery ajax回調出功能範圍

我該怎麼做?

回答

1

getJson()默認是一種異步方法,所以如果不做一些調整就不能依賴它。 使用.ajax()函數,將異步參數設置爲false,然後將結果賦給範圍在checkAuth()函數中的var。

事情是這樣的:

function ceckAuth() { 
    var ret = false; 
    $.ajax({ 
    url: '/users/checkauthjson', 
    dataType: 'json', 
    data: '', 
    async: false, 
    success: function(result) { ret = result.success; }, 
    error: ... 
    }); 
    return ret; 
} 
+0

注意,你頁面會毫無反應,而AJAX請求是在進步,因爲它現在是同步的。 – Matt 2010-04-22 15:54:03

+0

謝謝,夥計。我完全忘了Ajax代表什麼。 – vasion 2010-04-23 08:56:03