簡體   English   中英

Ajax 呼叫對重復請求沒有響應

[英]Ajax call not responding on repeated request

我有一個帶有下拉菜單的頁面。 onchange事件調用 Javascript function(下),其中包括檢索數據並填充TEXTAREA的 Ajax 塊。 從表面上看,一切正常。

我可以 select 列表中的任何項目都沒有問題。 但是,如果我 select 之前已選擇一個項目,則 Ajax 調用似乎掛起。 看起來可能是一些奇怪的緩存問題之類的。 如果我關閉瀏覽器並重新加載頁面,所有項目都會再次工作,直到我重新選擇。

當它掛起時,我已經測試了readyStatestatus屬性,但我什么也沒得到。 我錯過了什么嗎?

該頁面是身份驗證背后的客戶端項目,因此我無法發布 URL,但這是 Ajax 代碼。 這是在 PHP 頁面中,但沒有與此相關的 PHP 腳本。

function getText( id ) {
var txt = document.getElementById( "MyText" );

txt.disabled = "disabled";
txt.innerText = "";
txt.className = "busy";

var oRequest = zXmlHttp.createRequest();
oRequest.open( "get", "get_text.php?id=" + id, true );
oRequest.send( null );

oRequest.onreadystatechange = function() {
    if( oRequest.readyState == 4 ) {
        if( oRequest.status == 200 ) {
            txt.innerText = oRequest.responseText;
        } else {
            txt.innerText = oRequest.status + ": " + oRequest.statusText;   
        }

        txt.disabled = "";
        txt.className = "";

        oRequest = null;
    }
}}

編輯:代碼塊似乎有點古怪; 它不會讓我包含最后的} ,除非它與前一個在同一行。

發送請求,您正在設置onreadystatechange function。 如果它需要很長時間(即如果它到達服務器),這可能會起作用,因為在它嘗試調用回調之前會有延遲。

但是,如果頁面被緩存,瀏覽器可能會嘗試立即在send方法中調用onreadystatechange 將您的作業移至onreadystatechangeopen/send代碼之前。

嗨,緩存是由於相同的 url 被重復調用。 如果您動態更改 URl,則可以解決此問題。 就像通過在請求中添加帶有當前時間的查詢字符串(或任何隨機重新生成的數字),您可以更改 url 而不會影響結果

我猜你遇到了緩存問題。 我注意到 Internet Explorer 在緩存 ajax 調用方面比 Firefox 更積極。 確定正在發生的事情的一種方法是使用 Fiddler2。 此應用程序監視您的 web 流量,您將能夠查看瀏覽器是否正在發出請求,以及您收到的響應中返回的緩存標頭。

您可以從http://www.fiddlertool.com/fiddler/下載 fiddler2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM