Лучший метод Инстанцирования объекта XMLHttpRequest

Вам нужно профилировать приложение, чтобы найти, что именно медленно: перебирая столбцы и сравнивая значения или находя совпадающие записи (строки), которые необходимо сравнить.

Что касается записи, решение может быть преобразовать таблицу в словарь. Это работает, если в ваших таблицах есть уникальный столбец, тогда вы можете преобразовать их в словарь, где ключ - это уникальное значение столбца для записи, а значение - целая строка. Затем выполните итерацию первого DataTable, получите уникальное значение столбца и получите строку из 2nd Datatable, но из словаря.

Если проблема заключается в сравнении двух строк, то лучше показать код, который можно увидеть, возможно, есть дополнительные сравнения или приведение. Трудно сказать без кода.

7
задан Peter Mortensen 9 January 2010 в 13:45
поделиться

8 ответов

Для решения библиотеки меньше можно эмулировать использование Прототипа Try.these довольно легко:

function newAjax() {
    try { return new XMLHttpRequest();                    } catch(){}
    try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(){}
    try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(){}
    try { return new ActiveXObject('Msxml2.XMLHTTP');     } catch(){}
    try { return new ActiveXObject('Microsoft.XMLHTTP');  } catch(){}
    return false;
}
11
ответ дан 6 December 2019 в 05:01
поделиться

Вот полезная ссылка, и некоторый код (должен покрыть все основания),

http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx

        var request = null;

        function InitAJAX()
        {
            var objxml = null;
            var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Microsoft.XMLHTTP"];            

            try
            {
                objxml = new XMLHttpRequest();
            }
            catch(e)
            {                
                for (var i = 0; i < ProgID.length; i++)
                {
                    try
                    {
                        objxml = new ActiveXObject(ProgID[i]);
                    }
                    catch(e)
                    {                        
                        continue;
                    }
                }
            }

            return objxml;            
        }

        request = InitAJAX();
9
ответ дан 6 December 2019 в 05:01
поделиться

Используйте jQuery (или подобная библиотека JavaScript). Это заботится о проблемах перекрестной совместимости браузера вещей как совершение звонков Ajax.

Например, с помощью вызова Ajax jQuery:

$.ajax({
    url: 'document.xml',
    type: 'GET',
    dataType: 'xml',
    timeout: 1000,
    error: function(){
        alert('Error loading XML document');
    },
    success: function(xml){
        // do something with xml
    }
});
8
ответ дан 6 December 2019 в 05:01
поделиться

Я предложил бы, чтобы следующий Sergey советовал или запись маленького, менее сложного патча для IE самостоятельно:

if(typeof window.XMLHttpRequest === 'undefined' &&
    typeof window.ActiveXObject === 'function') {
    window.XMLHttpRequest = function() {
        try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}
        try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}
        return new ActiveXObject('Microsoft.XMLHTTP');
    };
}

Затем можно сделать

var req = new XMLHttpRequest;

даже в IE.

редактирование 18.02.2011: посмотрите это сообщение в блоге для объяснения позади нового выбора версий MSXML...

8
ответ дан 6 December 2019 в 05:01
поделиться

Используя примерно любой JavaScript Ajax библиотека предпочтительна для записи Вашей собственной платформы Ajax - если в этом суть. Вы могли бы хотеть проверить jQuery или Прототип, или MooTools или Dojo или [вставляют имя здесь] платформа, чтобы видеть, как они делают это, если Вы настаиваете на том, чтобы писать свое собственное.

3
ответ дан 6 December 2019 в 05:01
поделиться

Это - то, что я использую, это хорошо работает для меня:

    function request()
    {
        try
        {
            try
            {
                return new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch( e )
            {
                return new ActiveXObject("Msxml2.XMLHTTP")
            }
        }
        catch(e) 
        {
            return new XMLHttpRequest()
        }
    }
1
ответ дан 6 December 2019 в 05:01
поделиться

Я иду с предложением Cletus jQuery и также проверяю плагин Формы jQuery, очень мощный и простой использовать для быстрого преобразования форм для работы через Ajax.

0
ответ дан 6 December 2019 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: