日期:2014-05-17  浏览次数:20712 次

ajax刷新表格
用AJAX刷新表格数据,本地可以使用,远程地址时就不能用了,为什么?
比如我用http://localhost:8888/test.html就可以刷新
但是用IP地址就不行,比如http://192.168.1.142:8888/test.html,ip地址就是我电脑的IP
代码如下:
JScript code


      //设置每隔几秒刷新一次
      window.setInterval("reloadTable()",1000);
      var count = 0 ;
      //刷新方法
      function reloadTable(){
           //固定格式
         if(window.XMLHttpRequest){
             xmlHttp = new XMLHttpRequest();
         }else{
             try{
                 xmlHttp = new ActiveXObject("Msxm12.XMLHTTP");
              }catch(e) {
              try{
                  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
              }catch(e) {
                alert("浏览器不支持");
              }
              }
         }
         count ++ ;
         //访问URL xmlHttp.open(METHOD,URL);
         var url = "http://localhost:8888/fioc/search.action?id="+(count+1)+"&"+"t="+Math.random() ;
         xmlHttp.open("POST",url,true);
         xmlHttp.send();
         //不同状态触发的事件
         xmlHttp.onreadystatechange = function(){
             var state = xmlHttp.readyState;
             var returnValue  ;
               if(state == 4&& xmlHttp.status==200){
                  //当状态为4时,说明服务器已处理完成,获取返回值
                 returnValue = xmlHttp.responseText;
                 //处理返回数据
                 displayData(returnValue);
              }
         } ;
     }
     function displayData(data){
         var table = document.getElementById("myTable") ;
         if(data != null && data.length > 0){
              //定义的格式为[x:x:x;y:y:y;z:z:z]每个元素以";"分隔
             var arrayObj = data.split(";");
             for(var i = 0 ; i < arrayObj.length ; i++){
                var str = arrayObj[i];
                //元素格式[行号:key:value](例如[1:id:123])
                var valueArray = str.split(":");
                var td = document.getElementById("td_"+valueArray[0]+"_"+valueArray[1]);
                if(null != td){
                    td.innerHTML = valueArray[2];
                }
             }
             
         //向table中插入一个TR
         //    var newTR = table.insertRow(table.rows.length);
        //    for(var i = 0 ; i < arrayObj.length ; i++){
        //        var value = arrayObj[i] ;
        //        //向TR中插入一个TD
         //        var newTD = newTR.insertCell(i);
         //        newTD.innerHTML = value.toString();
        //    }
          }
     }



求高人帮忙。。。。

------解决方案--------------------
试试JQUERY的ajax请求吧.我好久没用过js的ajax了.太麻烦 又容易出错.都已经忘记怎么用了.
------解决方案--------------------
可能是ajax的跨域问题. 你浏览器输入框里面用的是localhost然后改成ip后浏览器认为是跨域访问.
------解决方案--------------------
var url = "http://localhost:8888/fioc/search.action?id="+(count+1)+"&"+"t="+Math.random() ;


你这地方的地址不要写死了,写成
var url = "./fioc/search.action?id="+(count+1)+"&"+"t="+Math.random() ;
试试

或者根据下面方法获取到根地址,在jsp页面适用:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

然后再
var url = "<%=basePath %>fioc/search.action?id="+(count+1)+"&"+"t="+Math.random() ;

------解决方案--------------------
var url = "http://localhost:8888/fioc/search.action?id="+(count+1)+"&"+"t="+Math.random() ;
当你用ip后 浏览器认为是跨域访问,把localhost也改成ip试试