基本的ajax功能不起作用

时间:2011-12-16 23:00:50

标签: ajax jsp tomcat

我正在学习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函数的页面相同的层次

你有什么建议吗?

3 个答案:

答案 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.XMLHttpRequestwindow.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/

正如他们所说,错别字......