1

我正在尝试使用 id=OCRID 更新 div,它是我页面上包含一些数据的 div。我首先使用了以下 URL 中的代码,但是我们切换到了 jQuery 方法。<-丑陋的 ajax->。切换到这个。使用警报,我看到成功返回的消息是正确的消息,但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;
   }
 });
4

4 回答 4

3

首先你提到OCRID的是一个 iddiv并且你已经使用过

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

它返回HTML元素的值,但 adiv不包含任何值属性,并且在您使用的成功回调中

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

来自jQuery文档:

成功(数据,文本状态,jqXHR)

请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据 dataType 参数格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。从 jQuery 1.5 开始,success 设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 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);
于 2013-01-03T19:22:54.113 回答
0

替换这一行:

document.getElementById(OCRID).innerHTML=msg;

和:

document.getElementById("OCRID").innerHTML=msg; // notice the quotes
于 2013-01-03T18:55:23.507 回答
0

为什么不使用 jQuery 版本的元素接口呢?对我来说,它看起来像是OCRID一个变量,对吧?

$.ajax({
   type: "GET",
   url: url,
   data: "q="+OCRID+"&newstatus=" + $('#' + OCRID).text(),
   success: function(msg, OCRID){
     $('#' + OCRID).html(msg);
   }
 });
于 2013-01-03T18:57:00.727 回答
0

如果你的成功回调有OCRID一个参数(这是不正确的),它将被使用而不是你在数据参数中使用的那个,所以删除它。

$.ajax({
   type: "GET",
   url: url,
   data: "q="+OCRID+"&newstatus="+document.getElementById(OCRID).innerHTML,
   success: function(msg){
     document.getElementById(OCRID).innerHTML=msg;
   }
 });
于 2013-01-03T18:58:57.803 回答