繁体   English   中英

Jquery JSON和XML同时加载/功能性能改进

[英]Jquery JSON and XML Simultaneous Load / Function Performance Improvement

我有一些jquery从xml文件加载一些信息用作Dictionary,然后是一些json。 我目前有代码工作但是它必须在加载json之前等待xml加载成功。 我想要做的是加载xml和json,将数据存储在变量中,然后当两个加载另一个函数时。 这可能吗?

这是我目前的代码......

$(document).ready(function () {
    var dict = {};
    $.ajax({
        type: "GET",
        url: "/_layouts/SiteLocations.xml",
        dataType: "xml",
        success: function (xml) {
            $(xml).find('type').each(function () {
                var key = $(this).find('key').text().replace(/ /g, '_');
                var definition = $(this).find('definition').text();
                //assign key and definition to dictionary
                dict[key] = definition;
            });
            getsites(dict);
        }
    });
});

function getsites( dict) {
        $.getJSON('/_layouts/SiteLocations.ashx', function (json) {
            //handle data
            $.each(json, function (i, item) {             
                //create web friendly id
                var sitetype = item.Type.replace(/ /g, '_');
                //check if list exists, if not create
                if ($('ul[name=' + sitetype).length) {
                    //add list item
                    $('ul[name=' + sitetype).append('<li><a href="' + item.URL + '">' + item.Title + '</a></li>');
                }
                else {
                    //create list and add item   
                    $('#ListContainer').append('<div id="' + sitetype + '"></div>');
                    $('#' + sitetype).append(dict[sitetype] + '<br />');
                    $('#'+sitetype).append('<ul name="' + sitetype + '" />');
                    $('ul[name=' + sitetype).append('<li><a href="' + item.URL + '">' + item.Title + '</a></li>');
                }
            });

        });

}

是的,您可以使用jQuery延迟对象

$.when( getJSONstuff, getXMLstuff ).then( function(jsonResp, xmlResp){

    // do stuff here

})

其中getJSONstuffgetXMLstuff是你的函数。

当从服务器返回两个响应时,将触发[匿名]回调。

编辑:订单已修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM