2013-01-03 130 views
1

我試圖更新id = OCRID,這是我的網頁上包含一些數據的div的div。我首先在下面的URL中使用了代碼,但是我們切換到了jQuery方法。 <-Ugly ajax->。切換到此。使用alert,我看到成功返回的消息是正確的消息,但document.getElementById(OCRID).innerHTML=msg不會更改該值。我有一些其他的JavaScript做一些類似的事情,但沒有從服務器的數據。請幫忙?jQuery/ajax不更新頁面上的div

$.ajax({ 
    type: "GET", 
    url: url, 
    data: "q="+OCRID+"&newstatus="+document.getElementById(OCRID).value, 
    success: function(msg, OCRID){ 
    document.getElementById(OCRID).innerHTML=msg; 
    } 
}); 

回答

3

你提到OCRID首先是div ID和你使用

document.getElementById(OCRID).value // a div doesn't have a value attribute 

它返回一個HTML元素的值,而是一個div不包含任何價值屬性,在成功回調您使用

success: function(msg, OCRID){ 
    document.getElementById(OCRID).innerHTML=msg; // innerHTML is right for a div 
} 

jQuery文檔:

成功(數據,textStatus,jqXHR)

一個函數,如果 請求成功被調用。該函數傳遞三個參數:從服務器返回的數據 ,根據dataType 參數進行格式化;描述狀態的字符串;和jqXHR(jQuery 1.4.x,XMLHttpRequest)對象。從jQuery 1.5開始,成功設置可以接受一系列函數。每個功能將在 轉。這是一個Ajax事件。

在這種情況下,你不應該使用 OCRID作爲第二個參數,因爲 jQuery使用3個參數的 success回調,這些都是基本 data, textStatus, jqXHR在這種情況下 data是你 msgOCRID在這種情況下成爲 textStatus

是響應的狀態消息,第三個參數是xhr對象。所以它應該是

$.ajax({ 
    type: "GET", 
    url: url, 
    data: "q="+OCRID+"&newstatus="+$('#'+OCRID).html(), // or text() 
    success: function(msg){ 
     $('#'+OCRID).html(msg); // or text() 
    } 
}); 

還記得你OCRID看起來像一個變量,這應該在你的ajax通話的範圍可用,並且如果這不是一個變量,那麼它應該是在這兩個地方$('#OCRID')下面給出

$('#OCRID').html(); 

,並在成功回調

$('#OCRID').html(msg); 
+1

很好的解釋,爲什麼我的函數通過OCRID打破了它。具有完美意義,我應該閱讀功能手冊。感謝您的提示:D – Trim

+0

@Trim,您非常歡迎:-) –

0

替換此行:

document.getElementById(OCRID).innerHTML=msg; 

有了:

document.getElementById("OCRID").innerHTML=msg; // notice the quotes 
+0

OCRID是一個變量。 – Trim

0

爲什麼不使用jQuery的版本的界面元素?對我來說,它看起來像OCRID是一個變量,對嗎?

$.ajax({ 
    type: "GET", 
    url: url, 
    data: "q="+OCRID+"&newstatus=" + $('#' + OCRID).text(), 
    success: function(msg, OCRID){ 
    $('#' + OCRID).html(msg); 
    } 
}); 
+0

div沒有值屬性。 –

+0

好點。謝謝! –

0

如果你的成功回調有OCRID作爲參數(這是不正確的)將使用它,而不是你在你的數據參數中使用的,因此將其刪除。

$.ajax({ 
    type: "GET", 
    url: url, 
    data: "q="+OCRID+"&newstatus="+document.getElementById(OCRID).innerHTML, 
    success: function(msg){ 
    document.getElementById(OCRID).innerHTML=msg; 
    } 
}); 
+0

div沒有值屬性,您正在使用OP(value和innerHTML)(如OP),並應​​考慮檢查您的答案。謝謝! –

+0

我想我錯過了 – Musa