2010-08-27 33 views
1

我願做這樣的事情:如何從jquery GET請求獲取返回值?

function blabla(); 

    var check = blabla(); 
    if(check == 1) 

但在我布拉布拉功能我有一個Get請求,我有一個回調,但不能得到的返回值是blablas返回值;

var checkemail = 0; 
    $.get("bla.aspx", { 
     day: "friday" 
    }, 
     function(data) { 
      console.log(data); 
      checkemail = data; 
     }); 

console.log("checkemail: " + checkemail); 
if (checkemail == '1') { 

問題是數據變量不分配checkemail變量。爲什麼沒有?

回答

0

您可以將if (check == 1) { ... }代碼移入回調嗎?

+0

但是,我必須在回調中有100行代碼。我覺得這很可笑。 – Jaffa 2010-08-27 09:01:46

+0

比你可以將代碼移動到一個單獨的功能,如john_doe,我建議。 – jigfox 2010-08-27 09:33:09

1

...怎麼樣?

function checkMail(data) { 
    if (data == '1') { 
     ... 
    } 
} 

$.get("bla.aspx", 
     { day: "friday" }, 
     function(data) { 
      console.log(data); 
      checkMail(data); 
     } 
); 
0

這是一個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 
); 
0

我做了這樣的代碼,它工作正常。

$.get("/url.php", function(reply){ 
alert(reply); 
}); 

也許你需要檢查是否:

  1. bla.aspx不會返回的東西。這是一種荒謬的調試你的代碼,而錯誤在另一個地方。
  2. 如果bla.aspx確實返回了一些內容。只要確保它不是null或空字符串。
  3. 嘗試另一頁。也許,也許,bla.aspx頁面在返回一些東西之前會消耗很多時間。這發生在我身上。

在我看來,沒有什麼是你的代碼錯了:) 哦,我錯過了什麼。用alert()語句替換你的函數體是很好的,以確保你不會輸入任何錯誤。如果您已經嘗試過,請忽略。