2010-11-10 201 views
2

我已經看過其他一些問題,並嘗試了一些選擇,但仍然有點損失。jquery不立即更新DOM?

編輯 - 只是爲了顯示實際的AJAX調用正在取得..

$.ajax({ 
    type: 'GET', 
    url: 'AJAXget/getPostcodeCheck.ashx', 
    data: 'postcode=' + postcode, 
    async: false, 
    timeout: 10000, 
    success: postcodeCallback, 
    error: function() { 
     alert('Sorry, there was an issue contacting the server.. please retry.'); 
     return; 
    } 
}); 

我有以下的jQuery AJAX綁定功能,在這裏我想展示一些東西正在加載例如..

$('#' + btnID).bind('ajaxStart', function() { 
    $('#' + btnID).append('<div>loading</div>'); 
}); 

這只是一個基本的例子..我沒有使用addClass函數來元素(#btnID是一個div),但似乎沒有直接發生。

我已經在函數中放置了一個alert語句來測試ajaxStart是否被觸發,它似乎是..所以我猜測我缺乏對DOM的理解和/或jQuery是錯!即爲什麼沒有立即顯示任何DOM更新/注入?

任何指針/想法大加讚賞!

+1

你試過'$(本).append( '

loading
');'? – 2010-11-10 19:40:53

+0

其實愚蠢不!我想我原本是這樣的......但是隨着切換和改變..會嘗試感謝! – 2010-11-10 19:43:41

+0

其實也試過$(this)..同樣的問題只是作爲一個額外的..它會添加到DOM /刷新一次AJAXSTOP完成.. I.E.任何傑出的功能都完成了嗎? – 2010-11-10 19:47:19

回答

1

嘗試編碼您ajaxStart方法是這樣的:

$('#' + btnID).ajaxStart(function() { 
    $(this).append('<div>loading</div>'); 
}); 

而且,看看會發生什麼,當你簡化你的jQuery Ajax調用此:

$.get('AJAXget/getPostcodeCheck.ashx', { postcode: postcode }, function(data) { 
    //$('#yourResultElement').html(data); 
    console.info(data); 
}); 

如果你使用螢火蟲(你」重新使用Firebug吧?),點擊控制檯標籤,看看返回的是什麼。

+0

謝謝,我最終削減到真正的基礎知識,只需點擊一個簡單的div更新..謝謝!頁面:使用chrome與他們的開發工具..當然類似於螢火蟲! – 2010-11-15 02:03:03

1

我想用戶點擊一個按鈕後,該代碼被調用。在這種情況下,你爲什麼不做到以下幾點:

  1. 前阿賈克斯,叫你做:$( '#' + btnID).append( '裝');
  2. 成功或錯誤的,你這樣做:$( '#' + btnID)一個.remove();

我相信這種做法會奏效。

+0

感謝您的評論。我現在已經添加了一個由onclick事件觸發的非常簡單的彈出通知。 – 2010-11-15 02:01:11