开发者

jquery-ajax : getting server xml file response in javascript array

I am trying to get XML response in javascript array like:

<script type="text/javascript">
    var arrayName = []; 
    var arrayValue  [];
$(document).ready(function()
{
    $.ajax({
    type: "GET",
    url: "data.xml",
    dataType: "xml",
    success: function(xml) { parseXml(xml); }
});
});

function parseXml(xml)
{
    $(xml).find("category").each(function()
    {
        arrayName.push($(this).find("name").text());
        arrayValue.push($(this).find("value").text());
    });
}

 //Do some javascript stuff using arrayName and arrayValue for example:
    alert(arrayName[0]);
    alert(arrayValue[0]);

</script>

But I am not able to get xml response in javascript array.

my XML file is :

<?xml version="1.0" encoding="utf-8" ?&开发者_Python百科gt;
    <data>
        <category id="category1">
            <name>Error</name>
            <value>41</value>
        </category>
        <category id="category2">
            <name>Warning</name>
            <value>23</value>
        </category>
        <category id="category3">
            <name>Info</name>
            <value>46</value>
        </category> 
    </data>  

please help me to solve this problem


I will repeat my comment here:

Put the alerts in the callback. They are executed before the response comes from the server. Ajax is asynchronous.

So basically you have to call all the code that has to deal with the response from your callback.

Example:

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "data.xml",
        dataType: "xml",
        success: function(xml) {          
            var items = parseXml(xml);
            doStuff(items);
        }
    });
});

function parseXml(xml) {
    var items = [];
    $(xml).find("category").each(function() {
        items.push({
            name: $(this).find("name").text(), 
            value: $(this).find("value").text()
        });
    });
    return items;
}

function doStuff(items) {
    //Do some javascript stuff with the response
    alert(items[0].name);
    alert(tiems[0].value);
}

Callbacks are nothing special. As functions are first class objects in JavaScript, you can pass them around like any other value.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜