2009-12-24 53 views
1

我在我的網站頁面有一個jquery ajax請求,並且我需要將每個頁面發佈到服務器以獲取狀態。但它有一個問題:在我打開瀏覽器中的頁面之後,在此請求返回數據之前,我的頁面所有鏈接都無法工作,它們無法單擊。但呈現正常。所以任何人都有解決方案?例如:使頁面在加載頁面或其他頁面後加載此腳本。如果Ajax請求沒有完成,html鏈接無法點擊

$(function(){  
     var login_status; 
     $.ajax({ 
     async:false, 
     url:<%= url(:login_status_header_session, :from => from_uri).to_json %>, 
     dataType:"html", 
     success:function(data, textStatus){ 
      login_status = data; 
     } 
     }); 
     if(login_status) { 
     $(".loginDetails p .login_status").html(login_status); 
     } else { 
     $(".loginWrapper").remove(); 
     } 
    }); 

這是login_status_header肌動蛋白:

self.headers [ 「緩存控制」] = 「無緩存,必重新驗證」
self.headers [ 「過期」] =「 0" 局部‘session_header’,
:格式=>‘HTML’

回答

1

呃... ...沒有審查過於詳細的代碼,如果這是應該在一旦頁面出現加載,爲什麼不只要把它放在服務器端,並首先生成正確的HTML?即使用PHP或任何你正在使用並忘記AJAX?

+0

對不起,某些頁面需要此更新狀態。 – wkang 2009-12-24 03:45:41

2

沒有更多的信息我只能猜測,我的猜測是,因爲你使用async: false,接口沒有響應。是否有同步執行請求的理由?如果不嘗試刪除async:false,看看是否有效。

+0

不,它需要使用這個選項,否則頁面將不會加載狀態碼。 – wkang 2009-12-24 03:44:55

+0

+1 - 你的網頁凍結的原因是像'異步:錯誤',就像達科說的那樣。 – Jason 2009-12-24 03:50:06

+0

你能告訴我更多細節嗎?導致我刪除async:false後,我的頁面將不會加載狀態html代碼。 – wkang 2009-12-24 03:56:09

3

首先,刪除async:false,一行。這樣,當AJAX請求被處理時,接口將繼續響應。其次,將結果的檢查移動到success函數中 - 否則它在請求結束之前運行,因此login_status尚未設置(因此默認爲null,將其視爲false)。

$(function(){  
     var login_status; 
     $.ajax({ 
     url:<%= url(:login_status_header_session, :from => from_uri).to_json %>, 
     dataType:"html", 
     success:function(data, textStatus){ 
      login_status = data; 
      if(login_status) { 
      $(".loginDetails p .login_status").html(login_status); 
      } else { 
      $(".loginWrapper").remove(); 
      } 
     } 
     }); 
    }); 
+0

它似乎不在我身邊生效,但還是謝謝你,你能告訴我什麼條件會導致凍結頁面? – wkang 2009-12-24 04:27:38

+0

+1正確性。即使它不工作async false不應該使用 – 2009-12-24 05:16:05

+0

self.headers [「Cache-Control」] =「no-cache,must-revalidate」 self.headers [「Expires」] =「0」 partial「 session_header「,:format =>」html「 end 這是login_status_headder_session操作。 這是關係嗎? – wkang 2009-12-24 06:03:45