I’m pretty new with Jquery. I’m trying to do a plugging that retrieves info from several pages.
I do an ajax call and get an xml, then I want to select a specific text of one node, xmlc looks like this:
<status>
<item>
<name>NameA</name>
<serviceUrl>theURL</serviceUrl>
<timeout>184</timeout>
<errorMessage></errorMessage>
<statusMessage>SpecificMessage</statusMessage>
</item>
<item>
<name>NameB</name>
<serviceUrl>theURL</serviceUrl>
<timeout>200</timeout>
<errorMessage></errorMessage>
<statusMessage>SpecificMessageB</statusMessage>
</item>
<item>
<name>NameC</name>
<serviceUrl>theURL</serviceUrl>
<timeout>300</timeout>
<errorMessage></errorMessage>
<statusMessage>SpecificMessageC</statusMessage>
</item>
</status>
and my code that i can’t make work is:
function parseXml(xml)
{
item = getItemFor(xml, "NameB");
console.log("name: " + item.find("name").text());
console.log("serviceUrl: " + item.find("serviceUrl").text());
console.log("timeout: " + item.find("timeout").text());
}
var getItemFor= function(xml, name){
$(xml).find("item").each(function(){
var itName = $(this).find("name").text();
if (itName === name){
console.log("Found: " + name);
return $(this);
}
});
}
bottom line, I can’t get the xml item NODE with name nameB out of the getItemFor function and i also can’t stop the .each() looping.
One workaround is modifying your
getItemForfunction to pass result returned from the inner loop:Or simplify
parseXmlcompletely (reducing to one selector):See this FIDDLE.