jQuery / ajax没有更新页面上的div

时间:2013-01-03 18:52:32

标签: php javascript jquery ajax

我正在尝试更新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;
   }
 });

4 个答案:

答案 0 :(得分:3)

首先,您提到的OCRIDdiv的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作为第二个参数,因为jQuerysuccess回调中使用了3个参数,这些参数基本上是data, textStatus, jqXHR,在这种情况下datamsgOCRID在这种情况下变为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;
   }
 });