2011-12-16 91 views
0

我正在学习Ajax和我现在面临一些问题,这个非常基本的功能:基本AJAX功能

功能fetchData(网址,的objectID){

var pageReqtest=null; 
    if(window.XMLHttpRequest)pageRequest=new XMLHttpRequest(); 
    if(window.ActiveXObject)pageRequest=new ActiveXObject("Microsoft.XMLHTTP"); 
    else return false; 

    pageRequest.onreadystatechange= function(){ 
     var object=document.getElementById(objectID); 
     object.innerHTML = pageRequest.responseText; 
    } 

    pageRequest.open("GET",url,true); 
    pageRequest.send(null); 

}

后来才知道有:

<div id="control" onclick="fetchData('data.jsp','message');">Click here for Ajax!</div> 
 

但不幸的是,它不工作,但功能虽然正确地调用。

我在Eclipse中有我的项目,我在Tomcat 6上运行这个页面,data.jsp是它的一行html,data.jsp与JavaScript函数所在的页面位于相同的层书面

你有什么建议吗?

回答

0

我最好的选择是,它是由您的拼写错误的function语法错误:

pageRequest.onreadystatechange= fucntion(){ 

这将导致的Javascript没有被解析,让你的函数永远不会被定义。


在不同的音符,还有其他几个小错误,虽然他们可能不会阻止你的代码的工作,可能会使您的生活困难。

var pageReqtest=null; 

在其他地方你叫变量pageRequest。保持一致:目前,您正在创建一个名为pageRequest的全局变量,并完全忽略了本地变量pageReqtest

if(window.XMLHttpRequest)pageRequest=new XMLHttpRequest(); 
if(window.ActiveXObject)pageRequest=new ActiveXObject("Microsoft.XMLHTTP"); 
else return false; 

如果浏览器都window.XMLHttpRequestwindow.ActiveXObject,您将创建两个,第一个XMLHttpRequest对象,那么你将与ActiveXObject的覆盖。这不是你想要的 - 这是不理想的,如果可用,最好使用正确的XMLHttpRequest。

执行此操作的快速方法是在第一行创建第二行else if

你错过了在getElementById呼叫ID:

var object=document.getElementById(); 

我想这应该是:

var object = document.getElementById(objectID); 
+0

嗨,谢谢你的回复,我已经纠正了所有的错别字,现在它的部分工作,我现在使用绝对URL onclick =“fetchData('WEB-INF/views/data.jsp','message “);”获取文件data.jsp,但tomcat给了我一个404,也是,我是春天框架,当我点击与事件处理程序的div,它激活一个控制器,通常只适用于我会发送一个窗体或点击一个链接adressess该控制器 – JBoy 2011-12-16 23:24:26

0

拼写错误旁边,由lonesomeday提到

你也有缺失参数var object=document.getElementById();