2014-02-10 56 views
-1

Jquery與我認爲很簡單,但我不明白爲什麼它不起作用。JQuery比較字符串,如果不工作

我有一個$ .post從ASP文件中檢索一個值,並將其放入我的主頁面中的一個變量。

var bankmsgstatus; 
$.post("bankmsgstatus.asp", {}, function(data3) { 
    bankmsgstatus = data3; 

}); 

但是,當我嘗試做比較時,它不起作用。

if (bankmsgstatus == 'on') { 
    alert("Value: " + bankmsgstatus); 
} else { 
    alert("Value: " + bankmsgstatus); 
} 

我得到的是,bankmsgstatus值「未定義」

我在做什麼錯?

感謝

+0

這個'if'位於哪裏?我懷疑你應該通讀這個:http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call –

+0

謝謝詹姆斯的參考。這是一篇非常好的文章! – Saj

回答

1

我猜想,這個問題是由事實$.post()是異步引起的。它不會立即完成,因此當您嘗試使用變量bankmsgstatus時尚未設置。

我建議這樣的:

$.post("bankmsgstatus.asp", {}, function(data3) { 
    var bankmsgstatus = data3; 

    if (bankmsgstatus == 'on') { 
     alert("Value: " + bankmsgstatus); 
    } else { 
     alert("Value: " + bankmsgstatus); 
    } 
}); 
在JavaScript

異步編程需要通過異步操作成功或完成處理產生的任何數據只能從完成處理函數可以使用在函數本身或作爲參數傳遞給您從那裏調用的某個函數。這是因爲這個完成函數被調用時的時間是未知的(將來有一段時間),而你的其他JavaScript繼續運行,並不等待它完成。因此,你知道它完成時唯一的方法就是觸發你的操作,該操作使用來自實際完成處理程序本身的結果。