Ajax会警告响应,但不会将其添加到dom中

时间:2011-02-17 11:22:02

标签: javascript ajax

我有这个函数处理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,所以我不知道在这里理解这个问题。

关于破坏普通javascript函数的Ajax调用有什么不同?我该如何解决它?

2 个答案:

答案 0 :(得分:2)

appendChild方法将HTMLElementNode(或其他DOM节点对象)作为参数,而不是String

您需要使用createElementcreateTextNode构建DOM树,然后附加该树。这是一个很好的解决方案,结合服务器返回以JSON表示的整洁数据结构。

或者,您可以查看innerHTML

答案 1 :(得分:-1)

更改divNode.appendChild (xmlhttp.responseText);

<强> jQuery的:

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

将您传入divNode的内容更改为'.classname' or '#idname'

非jQuery:

document.getElementById(divNode).appen ... divNode需要是元素的ID