2014-09-24 96 views
0

我一直在嘗試學習Javascript/jQuery,但我碰到了一堵我似乎無法打破的牆。 這是我的代碼:jQuery Ajax返回變量(邏輯缺陷)

function beginProblem() { 
var myVar = getMyVar(); 
console.log(myVar); 
} 

function getMyVar(){ 
$.ajax({ 
    url: "myTest.php", 
    success: function(result){ 
     var myVar = result; 
     // return myVar; THIS DOESN'T WORK 
    } 
}); 
return myVar; // This doesn't work either 
} 

beginProblem(); 

myvar可以登錄爲未定義,因爲運行的console.log是getMyVar完成之前。 我已經閱讀了關於這個問題的一些其他問題,但我沒有設法理解解決方案,有人可以讓我知道,當我需要從ajax調用獲得一個變量,然後執行其餘部分時,我應該記住什麼功能?

對不起,提前謝謝!

回答

0

嘗試一些類似這樣的

function beginProblem() { 
 
var myVar = getMyVar({ 
 
    success:function(result) 
 
    { 
 
    console.log(result); 
 
    } 
 
}); 
 
} 
 

 
function getMyVar(obj){ 
 
$.ajax({ 
 
    url: "myTest.php", 
 
    success: obj.success 
 
}); 
 
} 
 

 
beginProblem();

+0

OMG這個工作!請告訴我發生了什麼,我似乎無法理解這一點! – 2014-09-25 00:19:49

+0

在我的例子中,你爲ajax請求設置了回調。所以,它在請求完成後運行 – 2014-09-25 09:28:29

0

所以在ajax方法中,您將url指向「myTest.php」。再次檢查此網址。如果您使用Chrome,請在運行之前右鍵單擊Inspect元素(或按F12,如果您使用Firefox,則可以下載並安裝Firebug插件進行調試),單擊「Network」選項卡,然後以原始格式查看您的請求。如果您的請求返回代碼200,則表示網址無誤,除非進行檢查。如果代碼是200,請再次檢查您的功能。

如果它返回代碼500,請再次檢查你的函數,返回類型,邏輯順序。 和400,這意味着它可以找到你的服務,你必須檢查你的網址完全路徑。我對PHP沒有足夠的知識。但是我在Java方面經驗豐富,如果你換成java,請按照我的方向行事。

0

試試這個,它會工作....

function beginProblem() { 
var myVar = getMyVar(); 
console.log(myVar); 
} 

function getMyVar(){ 
$.ajax({ 
    url: "myTest.php", 
    async: false, 
    success: function(result){ 
     return result; 
    } 
}); 
    } 

beginProblem();