Javascript 简单的AJAX检索XML文件中的数据,在“错误”方面出错;。responseXML";
我搜索了又搜索,检查了四遍拼写和语法,我被难住了。我甚至检查了“jslint”的语法。我已将所有代码放在“JSFIDLE”上:Javascript 简单的AJAX检索XML文件中的数据,在“错误”方面出错;。responseXML";,javascript,ajax,xml,Javascript,Ajax,Xml,我搜索了又搜索,检查了四遍拼写和语法,我被难住了。我甚至检查了“jslint”的语法。我已将所有代码放在“JSFIDLE”上: var xmlHttp=createXmlHttpRequestObject(); 函数createXmlHttpRequestObject(){ var-xmlHttp; if(window.XMLHttpRequest){ xmlHttp=新的XMLHttpRequest(); } 否则{ xmlHttp=新的ActiveXObject(“Microsoft.xm
var xmlHttp=createXmlHttpRequestObject();
函数createXmlHttpRequestObject(){
var-xmlHttp;
if(window.XMLHttpRequest){
xmlHttp=新的XMLHttpRequest();
}
否则{
xmlHttp=新的ActiveXObject(“Microsoft.xmlHttp”);
}
返回xmlHttp;
}
函数过程(){
if(xmlHttp){
试一试{
open(“GET”,“data_people.xml”,true);
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.send(空);
}
捕获(e){
警报(“进程内函数。
创建xmlHttp对象时出错:+e.toString());
}
}
}
函数handleStateChange(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
试一试{
HandlerResponse();
}
捕获(e){
警报(“获取文本时遇到问题。”+e.toString());
}
}
否则{
警报(“状态=“+xmlHttp.readyState+”状态=“+xmlHttp.Status”);
}
}
}
函数handleResponse(){
var xmlResponse=xmlHttp.responseXML,
root=xmlResponse.documentElement,
name=root.getElementsByTagName(“名称”),
ssns=root.getElementsByTagName(“ssn”);
警报(xmlHttp.responseText);
var=”;
对于(var i=0;i您在小提琴中设置javascript选项的方式,它只会执行onLoad
(这意味着您的所有函数都将在onLoad函数中定义-并且在全局范围内或在执行所述函数之前都不可用)。这是一个顶部带有小点的catch 22。您需要将左侧的第二个下拉列表设置为不换行
或不换行
接下来是JSFIDLE示例代码。这里有一大堆错误:
您应该已经引用了Request,而不是Request.XML(您刚刚编写的;P),并且您应该已经包含了MooTools库(左侧的第一个下拉列表),因为Request来自于此;)
url区分大小写!“/echo/xml/”
,而不是“/echo/xml/”
xml字符串需要使用正确的转义引号,javascript字符串不支持原始换行符(它们也可以转义…但这是另一个故事)-现在只需折叠它们
…但你不需要那个例子。只要用你自己的代码就行了
请记住使用正确的测试url(使用POST
而不是GET
)并转义/折叠测试xml
这是一把有效的小提琴:你的小提琴是糟糕的JavaScript。XML中的引号不会被转义。打开浏览器控制台查看。我在“JSFIDLE”或我的任何互联网搜索工作中都找不到你说的话。我怀疑我不知何故应该在“过程”中集成帖子和文件名函数。您的示例肯定会把一切都弄清楚。非常感谢您提供了一个非常清晰的示例。因此,这肯定解决了让我的代码能够使用“JSFIDLE”的问题就像在我的电脑上一样。现在我回到我的主要问题…为什么代码不能提取和数据以提供HandlerResponse()中的姓名列表函数?最后一点是,xml头中有需要删除的空白:这真是令人难以置信的尴尬。这和给教程的人发生的事情是一样的,我忘了回去更正它。令人惊讶的是,一个小小的空格竟然可以完全破坏代码。我可以打个勾,但我没有eno我还没放弃呢。非常感谢“rasmusfl0e”。
var xmlHttp= createXmlHttpRequestObject();
function createXmlHttpRequestObject(){
var xmlHttp;
if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
else{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlHttp;
}
function process() {
if (xmlHttp) {
try{
xmlHttp.open("GET", "data_people.xml", true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.send(null);
}
catch (e) {
alert ("In process function.<br/>Error in creating xmlHttp object: "+ e.toString());
}
}
}
function handleStateChange() {
if(xmlHttp.readyState==4) {
if (xmlHttp.status==200) {
try {
handleResponse();
}
catch(e) {
alert ("Trouble getting text." + e.toString());
}
}
else {
alert ("State = "+xmlHttp.readyState+" Status= " + xmlHttp.status);
}
}
}
function handleResponse() {
var xmlResponse = xmlHttp.responseXML,
root = xmlResponse.documentElement,
names = root.getElementsByTagName("name"),
ssns = root.getElementsByTagName("ssn");
alert (xmlHttp.responseText);
var stuff = "";
for(var i=0;i<names.length;i++) {
stuff = names.item(i).firstChild.data + "-" + ssns.item(i).firstChild.data + "<br/>";
}
theD = document.getElementById("theD");
theD.innerHTML = stuff;
}