основная функция AJAX не работает - PullRequest
0 голосов
/ 17 декабря 2011

Я изучаю Ajax и столкнулся с некоторой проблемой с этой очень простой функцией:

функция 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 голосов
/ 17 декабря 2011

рядом с неправильным написанием, как упоминалось в одиночку

здесь также отсутствует параметр var object=document.getElementById();

0 голосов
/ 17 декабря 2011

Похоже, что другие бьют меня, но в любом случае, здесь работает скрипка: http://jsfiddle.net/smendola/BcMMn/

Как они сказали, опечатки ...

0 голосов
/ 17 декабря 2011

Лучше всего, если это синтаксическая ошибка, вызванная неправильным написанием 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 звонке:

 var object=document.getElementById();

Я думаю, это должно быть:

 var object = document.getElementById(objectID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...