Arhn - архитектура программирования

Можем ли мы динамически загружать два XML-файла одновременно с помощью jquery?

используя «AJAX», мы можем загружать наши файлы, такие как xml / json. Но есть ли возможность загрузить одновременно два xml с помощью AJAX или получить.

AJAX:

$.ajax({
        url: 'test.xml',
        type: "get",
        context: this,
        success: function (data) {
            alert("success");
        },
        error: function () {
            alert("failure");
        }
    });

Заранее спасибо.

24.05.2013

Ответы:


1

вступление

Это можно сделать легко, jQuery даже предоставляет метод, который поможет вам сделать это в мгновение ока. По сути, все, что вам нужно, это связать несколько вызовов ajax и обработать их с помощью $.when, когда они будут выполнены.

Пример

Рабочий пример: http://jsfiddle.net/Gajotres/qNJS8/

В этом примере вы можете увидеть 3 различных вызова с помощью функции $.ajax. Также предупреждение, поскольку jsFiddle не поддерживают вызовы ajax, извлекающие xml, все полученные данные являются фиктивными данными, вам нужно будет только заменить их правильным URL.

Javascript:

$(document).on('pagebeforeshow', '[data-role="page"]',function(e,data){  
    // Multiple Ajax Requests 
    $.when( 
        parseXML({xml: "<cars><car><name>TOYOTA</name><country>JAPAN</country><pic>http://1call.ms/Websites/schwartz2012/images/toyota-rav4.jpg</pic><description>Toyota has announced that it will recall a total of 778,000 units that may have been manufactured with improperly-tightened nuts on the rear suspension.</description></car></cars>"}) , 
        parseXML({xml: "<cars><car><name>RENAULT</name><country>FRANCE</country><pic>http://cdn2.carsdata.net/thumb/182x105/pics/Renault/renault-sandero-16-stepway-01.jpg</pic><description>Renault Sandero 16 Stepway - this car is manufactured by renault. Renault Sandero 16 Stepway - Get car information and expert advice from CarsData.</description></car></cars>"}) , 
        parseXML({xml: "<cars><car><name>AUDI</name><country>GERMANY</country><pic>http://img2.netcarshow.com/Audi-RS6_Avant_2014_800x600_wallpaper_06.jpg</pic><description>The new Audi RS6 Avant unites 412 kW (560 hp) of power and 700 Nm (516.29 lb-ft) of torque with unrestricted practicality for everyday use and leisure.</description></car></cars>"})
    ).done(
        function(data1, data2, data3)
        {
            var allData = [].concat(data1).concat(data2).concat(data3);
            $(allData).find("car").each(function(){
                $('#cars-data').append('<li><a href="#cars"><img src="' + $(this).find('pic').text() + '" title="sample" height="100%" width="100%"/><h3>Car type:<span> '+ $(this).find('name').text() +'</span></h3><p>' + $(this).find('description').text() + '</p></a></li>'); 
            })
            $('#cars-data').listview('refresh');            
        }
    ).fail(
        function()
        {
            alert('Fail');  
        }
    );

    function parseXML(data)
    {
        return $.ajax({
            type: "POST",
            url: "/echo/xml/",
            dataType: "xml",
            data: data,
            success: function(data) {}
        });
    }   
});

Объяснение

По сути, чтобы понять это, вам нужно только понять метод $.when. Он принимает несколько функций и параметров и обеспечивает обратный вызов done и fail. Если мы читаем одни и те же данные, мы можем использовать функцию concat, чтобы объединить все вместе. После этого делайте с этими данными все, что хотите.

24.05.2013

2

Да, вы можете просто запустить два запроса ajax:

$.ajax({
    url: 'test.xml',
    type: "get",
    context: this,
    success: function (data) {
        alert("success");
    },
    error: function () {
        alert("failure");
    }
});
$.ajax({
    url: 'test2.xml',
    type: "get",
    context: this,
    success: function (data) {
        alert("success");
    },
    error: function () {
        alert("failure");
    }
});

См. Вопрос jQuery: Возможно ли одновременное выполнение запросов ajax? если вам нужна дополнительная информация

Выдержка ответов:

«Вам нужен асинхронный режим (по умолчанию). Браузер ограничивает вас двумя запросами в любой момент времени. Это часть спецификации HTTP. (Спецификация HTTP 1.1, раздел 8.1.4)»

24.05.2013
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..