Да, это может быть немного сложно объяснить.
У меня есть запрос jQuery AJAX, который читает файл XML с макетом, подобным следующему:
<root>
<nodes>
<node type="typeOne" name="nodeNameOne" />
<node type="typeOne" name="nodeNameTwo" />
<node type="typeTwo" name="nodeNameThree" />
<node type="typeThree" name="nodeNameFour" />
<node type="typeFour" name="nodeNameFive" />
</nodes>
<otherNodes>
<otherNode name="nodeNameOne">Some value</otherNode>
<otherNode name="nodeNameTwo">Some value</otherNode>
</otherNodes>
</root>
Это не то, что я контролирую; XML-файлы создаются сторонним инструментом.
Я хочу прочитать значение атрибута name <node>
s, а затем использовать его для извлечения значения из соответствующего <otherNode>
, если оно существует.
Это то, что у меня есть в моей функции обратного вызова успеха:
function ParseFile(data, status, request){
var types = ['typeOne', 'typeTwo']; //I don't care about all the <node>s
alert(typeof data); //displays "object"
types.each(function(entry, index){
alert(typeof data); //displays "object"
var typeNodes = jQuery(data).find('node[type="'+entry+'"]');
typeNodes.each(function(){
alert(typeof data); //displays "undefined"
var name = jQuery(this).attr('name');
/* The data object is undefined once you get inside this loop,
so the following doesn't work. */
var otherNode = jQuery(data).find('otherNode[name="'+name+'"]').text();
});
});
}
Проблема в том, что я не могу получить доступ к переменной данных из второго цикла .else()
. Даже если я объявлю переменную внутри первого, var newData = data;
, newData также не определена.