2012-08-15 72 views
1

我發現對$ .get的嵌套調用在JQuery中不起作用。我已經將我的情況歸結爲下面的內容。首先調用$ .get,然後如果條件爲真,則回調函數 再次調用$ .get。即使我看到條件爲真的警報,第二個調用似乎也沒有完成。

有沒有人得到這樣的嵌套工作?

function callbackFn (responseText, textStatus, XMLHttpRequest) { 
    alert("About to make call. Condition is " + someCondition); 
    if (someCondition) { 
     $.get("localhost:8080/MyServlet?action=bar"); 
    } 
    document.location.href = "http://www.google.com" 

} 

$(document).ready(function() { 
    $.get("localhost:8080/MyServlet?action=foo", callbackFn); 

} 
+5

你前改變文檔位置第二個有機會做任何事情('$ .get'是異步的) – MrOBrian 2012-08-15 23:03:05

+0

嚴格來說第二個調用應該是一個帖子。它只是通知服務器一些東西,不需要任何返回值,所以它可以在第二次調用結束之前進入下一頁 – dam 2012-08-16 14:24:58

回答

0

鏈接不同的ajax請求是更好的,因爲它們是異步的。鏈接最好用.succes().complete()

+0

原來,我的錯誤是第二次調用URL的錯誤參數。得到()。嵌套$ .get工作正常,jsfiddle是測試javascript和jquery想法的有用工具。 – dam 2012-08-16 18:49:03

+0

你不應該像你一樣把它們嵌套在一起。也許它在測試時工作正常,但有時可能會發生第一個請求的響應需要更長時間,第二個請求的響應已經開始,導致不可靠。你會發現...始終使用Ajax回調,如成功,完整和錯誤 – 2012-08-16 19:26:13

0

嘗試this(使用的jsfiddle 「/回聲/ HTML /」 測試AJAX)完成:

function callbackFn (data) { 
    alert(data); 
    if(data === 'First POST') { 
     $.ajax({ 
      type: 'POST', 
      url: "/echo/html/", 
      data: { 
       html: 'Second POST' 
       }, 
      success: callbackFn, 
      dataType: "HTML" 
     }); 
    } 
} 

$(function() { 
    $.ajax({ 
     type: 'POST', 
     url: "/echo/html/", 
     data: { 
      html: 'First POST' 
      }, 
     success: callbackFn, 
     dataType: "HTML" 
    }); 
}) 
+0

嘿這個jfiddle是一個很酷的工具。所以我用$ .get重新編寫了你的​​小提琴,它可以工作。我原來的帖子是從一段更復雜的代碼中解脫出來的,所以我將不得不另外創建一個更接近實際代碼的例子,以查看是否/何時可以讓小提琴失敗。 – dam 2012-08-16 14:35:31