我正在尝试更新id = OCRID的div,这是我页面上包含一些数据的div。我首先使用了以下URL中的代码,但是我们切换到了jQuery方法。 <-Ugly ajax->。切换到这个。使用alert,我看到成功返回的消息是正确的消息,但document.getElementById(OCRID).innerHTML=msg
不会更改该值。我有一些其他的javascript做了一些类似的事情,但没有来自服务器的数据。请帮帮忙?
$.ajax({
type: "GET",
url: url,
data: "q="+OCRID+"&newstatus="+document.getElementById(OCRID).value,
success: function(msg, OCRID){
document.getElementById(OCRID).innerHTML=msg;
}
});
答案 0 :(得分: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文档:
成功(data,textStatus,jqXHR)
如果是,则调用的函数 请求成功。该函数传递三个参数:数据 从服务器返回,根据dataType格式化 参数;描述状态的字符串;和jqXHR(在jQuery中 1.4.x,XMLHttpRequest)对象。从jQuery 1.5开始,成功设置可以接受一系列函数。每个函数都将被调用 转。这是一个Ajax事件。
在这种情况下,您不应该使用OCRID
作为第二个参数,因为jQuery
在success
回调中使用了3个参数,这些参数基本上是data, textStatus, jqXHR
,在这种情况下data
是msg
,OCRID
在这种情况下变为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 :(得分:0)
替换此行:
document.getElementById(OCRID).innerHTML=msg;
使用:
document.getElementById("OCRID").innerHTML=msg; // notice the quotes
答案 2 :(得分:0)
为什么不将jQuery版本用于元素的接口?对我而言,OCRID
似乎是一个变量,对吧?
$.ajax({
type: "GET",
url: url,
data: "q="+OCRID+"&newstatus=" + $('#' + OCRID).text(),
success: function(msg, OCRID){
$('#' + OCRID).html(msg);
}
});
答案 3 :(得分:0)
如果您的成功回调有OCRID
作为参数(不正确),将使用它而不是您在数据参数中使用的那个,所以将其删除。
$.ajax({
type: "GET",
url: url,
data: "q="+OCRID+"&newstatus="+document.getElementById(OCRID).innerHTML,
success: function(msg){
document.getElementById(OCRID).innerHTML=msg;
}
});