遇到问题解析XML使用jQuery

问题描述:

我试图解析使用jQuery一些XML数据,并且因为它代表我已经提取所需的节点“id”属性,并将它们存储在一个数组,现在我想运行为每个数组成员创建一个循环,并最终从特定于每个ID的笔记中获取更多属性。遇到问题解析XML使用jQuery

问题目前是一旦我到了“for”循环,它不是循环,我想我可能没有正确写入的XML路径数据。它运行一次,我收到'alert(arrayIds.length);'只有一次,如果我删除后续的XML路径代码,它只循环正确的次数。

这里是我的功能:

var arrayIds = new Array(); 
$(document).ready(function(){ 
    $.ajax({ 
    type: "GET", 
    url: "question.xml", 
    dataType: "xml", 
    success: function(xml) 
    { 
        $(xml).find("C").each(function(){ 
         $("#attr2").append($(this).attr('ID') + "<br />"); 
         arrayIds.push($(this).attr('ID')); 
        }); 

        for (i=0; i<arrayIds.length; i++) 
        { 
        alert(arrayIds.length); 
        $(xml).find("C[ID='arrayIds[i]']").(function(){ 
         // pass values 
         alert('test'); 
        }); 
        } 
    } 
    }); 
}); 

任何想法?

此行是无效的。你错过了一个函数名。这是崩溃的脚本。

$(xml).find("C[ID='arrayIds[i]']").(function(){ 

应该是(也许):

$(xml).find("C[ID='" + arrayIds[i] + "']").each(function(){ // Note the added each 
+0

你的建议确实导致'alert(arrayIds.length)''循环并运行正确的次数,然而'alert('test');'内部函数内部因某种原因未执行。 – 2010-06-02 15:26:29

+0

您的选择器也不正确。我会更新我的答案。 – user113716 2010-06-02 15:28:13

+0

Matthews最新版本似乎解决了这个问题。尽管非常感谢您的帮助。 – 2010-06-02 15:36:24

它应该是:

$(xml).find("*[ID=" + arrayIds[i] + "]").each(function(){ 
    // pass values 
    alert('test'); 
}); 

之前,你正在寻找与文字值 “arrayIds [I]” 的ID。另外,ids是唯一的,所以你不需要C,我将它改为标准的jQuery语法。另外,正如帕特里克所说,你错过了每一个。

+0

ammending我的代码对你的建议之后,在行为上没有变化,我的错误控制台提示我“XML过滤器适用于非XML值......“。 补充:我已经添加了“每个”,这再次像帕特里克的回答导致循环正常运行,但我仍然有执行循环内的函数触发第二警报麻烦。 任何想法? 我不是很熟悉这个错误。 – 2010-06-02 15:26:05

+0

''#'+ arrayIds [i]'依靠分析器知道名为'ID'的属性应该是模式类型'ID'。对于HTML文档将是这种情况,但对于XML,它通常不会。 '[ID = ...]'属性选择器*是必需的。 – bobince 2010-06-02 15:27:44

+0

谢谢@bobince。我的错。 – 2010-06-02 15:29:40