2013-04-22 3 views
0

У меня есть следующий код, чтобы решить проблему IE XML локального доступа:MIME тип с JQuery 2.0.0

$.ajax({ 
     type: "GET", 
     url: options.xmlUrl, 
     dataType: ($.browser.msie) ? "text" : "xml", 
     success: function(data) {wrapTree(data);}, 
     error:function(){alert(options.loadingError);} 
    }); 

Он не работает с JQuery 2.0.0 из-за $ .browser. Рекомендация http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests недействительна. Кто-нибудь знает, как он должен быть адаптирован для работы с текущей версией jQuery?

+0

Отметьте Modernizr - это может быть испытание на то, что вам нужно выяснить, это всегда моя первая остановка – 2013-04-22 13:36:10

+0

. Стоит отметить, что документация на docs.jquery.com устарела (как указано здесь: http: // docs.jquery.com/) и заменяется на api.jquery.com, поэтому не полагайтесь на него как на хороший источник. (особенно статья, которую вы связали, что похоже на то, что она, вероятно, довольно старая, поскольку она использует объект activeX в коде успеха - yikes!) – Spudley

+0

jqueryrocks, Спасибо за совет. – Kynikos

ответ

0

Функция $.browser была удалена из jQuery с версии v1.9, и она устарела и не рекомендуется использовать еще в версии v1.3. Они рекомендуют определение функции вместо большинства случаев использования, а не обнаружения браузера.

Учитывая, что давно функция $.browser была устарела, если страница jQuery рекомендует ее использовать, то эта страница, вероятно, тоже очень старая - на самом деле, вполне вероятно, что более новые версии jQuery не нужны взломать вообще. Вы пытались просто оставить его полностью?

Если вы действительно это нужно, вы можете использовать jQuery migrate library, который ставит обратно все depreated функции, которые были удалены из v1.9 вперед, в том числе $.browser.

Однако, если это вообще возможно, я предлагаю попытаться найти решение, которое не связано с этой функцией, поскольку библиотека Migrate предназначена для решения проблем краткосрочного обновления, а не как долгосрочное решение; jQuery может не поддерживать его в будущих версиях.

Я бы также сказал, что, поскольку вы используете jQuery 2.0, вы должны отметить, что эта версия поддерживает поддержку IE v6, 7 и 8. Если вам нужно поддерживать более старую версию IE, вам нужно будет придерживаться jQuery 1.x. Что еще более важно, если вы придерживаетесь версии 2.0, вы поддерживаете только IE v9 и выше. Я не знаю об этой конкретной проблеме, но вполне возможно, что это может быть проблемой только в более старых версиях IE, поэтому вам может даже не понадобиться этот хак. Стоит проверить.

Надеюсь, что это поможет.

2

Просто используйте dataType: "text" для всех случаев, а затем data = $.parseXML(data) в обработчике успеха, чтобы превратить его в XML во всех браузерах.

+0

Привет, Дейв. Можете ли вы рассказать мне, как изменить полный код? $ .ajax ({type: "GET", url: options.xmlUrl, dataType: ($ .browser.msie)? "text": "xml", success: function (data) {wrapTree (data);}, ошибка : function() {alert (options.loadingError);}}); function wrapTree (data) {var xml; if (typeof data == "string") {xml = new ActiveXObject ("Microsoft.XMLDOM"); xml.async = false; xml.loadXML (данные); } else {xml = data; } – Kynikos

+0

Что-то вроде этого: '' ' dataType:" text ", success: function (data) {wrapTree ($. ParseXML (data));}, ' '' –