這是一個AJAX請求,A表示異步,這意味着你的代碼不會停止並等待響應,除非你這麼說。 $.get
只是$.ajax
的包裝。如果你想請求是同步的,你需要使用$.ajax
,而不是像這樣:
var checkemail = 0;
$.ajax({
async: true,
url: "bla.aspx",
data: {day:"friday"},
dataType: text,
success: function(data){
console.log(data);
checkmail = data;
}
});
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
或者你可以使用回調函數來檢查數據。回調函數是您在success屬性中定義的函數。這個函數在請求完成後被調用。所以,你可以這樣做:
$.get("bla.aspx", {
day: "friday"
},
function(checkmail) {
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
}
);
如果/* do something */
是很長的,你可以把它變成一個獨立的功能,比把函數調用get請求如下:
var do_something = function(checkmail) {
console.log("checkemail: " + checkemail);
if (checkemail == '1') { /* do something */ }
}
$.get("bla.aspx", {
day: "friday"
},
do_something // note the missing `()`, it must be like this
);
但是,我必須在回調中有100行代碼。我覺得這很可笑。 – Jaffa 2010-08-27 09:01:46
比你可以將代碼移動到一個單獨的功能,如john_doe,我建議。 – jigfox 2010-08-27 09:33:09