Ajax предупреждает ответ, но не добавляет его в домен - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть эта функция для обработки вызовов ajax:

function ajaxPost (divNode, parameters, file) {

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  } else {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    alert (xmlhttp.responseText);
    divNode.appendChild (xmlhttp.responseText);
    }
  }

xmlhttp.open("POST", file, true);

//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", parameters.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(parameters);
}

Оповещение о том, что на полпути вниз, дает мне ожидаемый вывод из данного php-файла, но я почему-то не могу добавить его в dom. Я проверил, что divNode - это на самом деле элемент div, и я успешно использую appendChild else-where, так что я не могу понять, в чем проблема.

Чем отличается вызов Ajax для нарушения нормальных функций javascript и как мне его обойти?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Метод appendChild принимает HTMLElementNode (или другой объект узла DOM) в качестве аргумента, а не String

. Вам необходимо построить дерево DOM, используя createElement и createTextNodeа затем добавить это.Это хорошее решение в сочетании с сервером, возвращающим аккуратную структуру данных, выраженную в JSON.

В качестве альтернативы вы можете посмотреть на innerHTML.

0 голосов
/ 17 февраля 2011

Изменение divNode.appendChild (xmlhttp.responseText);

до

JQuery:

$(divNode).appendChild (xmlhttp.responseText);

И измените то, что вы передаете как divNode, на что-то вроде '.classname' or '#idname'

Или Не jQuery:

document.getElementById(divNode).appen ... divNode должен быть идентификатором элемента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...