我正在学习Ajax,我正面临着这个基本功能的一些问题:
function fetchData(url,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 :(得分: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.XMLHttpRequest
和window.ActiveXObject
,则首先创建XMLHttpRequest对象,然后使用ActiveXObject覆盖它。这不是你想要的 - 它不是最理想的,如果它可用,最好使用正确的XMLHttpRequest。
快速执行此操作的方法是在开头设置第二行else if
。
您错过了getElementById
电话中的ID:
var object=document.getElementById();
我认为这应该是:
var object = document.getElementById(objectID);
答案 1 :(得分:0)
除了lonesomeday提到的错误拼写
此处您还缺少参数var object=document.getElementById();
答案 2 :(得分:0)
看起来其他人打败了我,但无论如何,这里有工作小提琴:http://jsfiddle.net/smendola/BcMMn/
正如他们所说,错别字......