Почему IE 10 отказывается отправлять данные POST через jQuery $.ajax

Как в моей среде разработки, так и в рабочей среде IE 10 отказывается отправлять какие-либо данные POST с помощью простого вызова $.ajax.

Мой скрипт выглядит так:

d = 'testvar=something';
$.ajax({
    data: d,
    success: function(h){
        console.log(h);
    }
});

Фактический запрос ajax проходит, но нет данных для публикации???

Заголовки запроса выглядят нормально:

Request POST /steps/~do HTTP/1.1
Accept  */*
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With    XMLHttpRequest
Referer http://localhost:8080/steps/
Accept-Language en-GB,en-AU;q=0.7,en;q=0.3
Accept-Encoding gzip, deflate
User-Agent  Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Host    localhost:8080
Content-Length  0
DNT 1
Connection  Keep-Alive
Cache-Control   no-cache

Но тело запроса пусто! (Я использую вкладку сети IE на панели разработчика F12 для захвата запросов). В сценарии PHP print_r($_POST); возвращает пустой массив.

Это отлично работает в IE 7–9, Chrome, FF и Safari, но не работает в IE10?

Я не уверен, что я что-то пропустил, или IE 10 просто глючит?

ИЗМЕНИТЬ

Я установил глобальные настройки ajax следующим образом:

$.ajaxSetup({
    url: ROOT+'~do', // ROOT is either http://localhost/.../~do or http(s)://www.steps.org.au/~do depending on production or development environment
    type: 'POST'
});

Дальнейшее редактирование

Использование IE версии 10.0.9200.16384 в 64-разрядной версии Windows 8 Pro

Прямое копирование/вставка заголовков запроса:

Key Value
Accept  */*
Accept-Encoding gzip, deflate
Accept-Language en-GB,en-AU;q=0.7,en;q=0.3
Cache-Control   no-cache
Connection  Keep-Alive
Content-Length  0
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Cookie  __utma=91949528.1947702769.1348201656.1353212510.1353237955.6; __utmz=91949528.1348201656.1.1.utmcsr=localhost|utmccn=(referral)|utmcmd=referral|utmcct=/coconutoil.org.au/; __utmb=91949528.2.10.1353237955; __utmc=91949528; cartID=8b3b2b9187cfb1aeabd071d6ec86bbbb; PHPSESSID=bl57l7fp0h37au7g0em7i3uv13
DNT 1
Host    www.steps.org.au
Referer https://www.steps.org.au/
Request POST /~do HTTP/1.1
User-Agent  Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
X-Requested-With    XMLHttpRequest

Тело запроса пусто.

Заголовки ответа:

Key Value
Response    HTTP/1.1 200 OK
Server  nginx/0.7.65
Date    Sun, 18 Nov 2012 11:23:35 GMT
Content-Type    text/html
Transfer-Encoding   chunked
Connection  close
X-Powered-By    PHP/5.3.5-1ubuntu7.2ppa1~lucid
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache

Инициатор

Property    Value
Stage   Document Processing
Element XMLHttpRequest
Action  Processing
Document ID 0
Frame ID    0
Frame URL   https://www.steps.org.au/Shop/Health-Products/

Страница, которая повторяет проблему (фактически весь сайт):

Магазин Steps to Life, Товары для здоровья


person Emmanuel    schedule 02.11.2012    source источник
comment
Вы пробовали использовать объекты? данные: {тестовая переменная: что-то}   -  person Victor Gutierrez    schedule 03.11.2012
comment
@Deviarte Да, я уже пытался использовать объекты ... тот же результат.   -  person Emmanuel    schedule 05.11.2012
comment
У меня такая же проблема с довольно большим сайтом, который я поддерживаю. Пытаюсь найти информацию/обходные пути..   -  person Nicholas    schedule 13.11.2012
comment
@Nicholas Дайте мне знать, если вы что-нибудь придумаете. Я еще не смог решить проблему.   -  person Emmanuel    schedule 14.11.2012
comment
@Emmanuel: код, который вы включили, определенно не полный. Вы должны включить type: "POST" и url: "~do" в качестве дополнительной опции $.ajax. Не могли бы вы включить все варианты, которые вы использовали? Если вы устанавливаете некоторые глобальные настройки для ajaxSetup, вы также должны включить эти настройки.   -  person Oleg    schedule 16.11.2012
comment
@Олег, я обновил вопрос, да, я установил некоторые глобальные настройки через ajaxSetup. Я также пробовал с этими настройками прямо в запросе.   -  person Emmanuel    schedule 17.11.2012
comment
@Emmanuel: Еще одна важная вещь: какую версию jQuery вы использовали? Я пытался воспроизвести проблему, но всегда добивался успеха в своих попытках.   -  person Oleg    schedule 18.11.2012
comment
@Олег Я использую последнюю версию 1.8.2. Попробуйте перейти сюда и добавить что-нибудь в корзину steps.org.au/Shop/Health. -Продукты На этой странице воспроизводится моя проблема.   -  person Emmanuel    schedule 18.11.2012
comment
@Emmanuel: Что именно можно делать на странице? Если я добавляю товар в корзину, все работает правильно. Данные i=1211&q=1&token=bc7b5a8fde2470d8a67f5fe61e89fd6ce23f0844&cmd=addToCart&sideBar=1 будут отправлены по URL-адресу https://www.steps.org.au/~do. Content-Length равно 81, Referer=https://www.steps.org.au/. Я использовал IE10 в Windows 8 (User-Agent=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch)). Нет проблем! Что отличается от вашего теста? Возможно, у вас есть смесь между HTTP и HTTPS? Но как?   -  person Oleg    schedule 18.11.2012
comment
@Oleg Смотрите мой отредактированный ответ для версии IE и других заголовков. Тот же Referer и User-Agent. Но абсолютно никакие данные POST не проходят.   -  person Emmanuel    schedule 18.11.2012
comment
Я получаю те же ошибки на вашем сайте, @Emmanuel - мой пользовательский агент НЕ сенсорный. Это настольная версия IE10, а не Metro. Может быть, это имеет значение? редактировать: ПОДТВЕРЖДЕНО. в версии Metro эта ошибка НЕ ​​проявляется, а в версии для настольных ПК она присутствует.   -  person Nicholas    schedule 21.11.2012
comment
@Nicholas Это действительно странно ... У меня сейчас нет времени на всесторонние тесты, но я надеюсь, что не так уж много пользователей сталкиваются с проблемой на моем сайте ...   -  person Emmanuel    schedule 21.11.2012
comment
У вас есть сторонний менеджер загрузок? Некоторые вызывают эту проблему, и это согласуется только с настольным компьютером.   -  person EricLaw    schedule 21.11.2012
comment
@EricLaw Очень интересное наблюдение. Да, у меня есть надстройка FDM в IE. Я удалю его и посмотрю, как мы пойдем.   -  person Emmanuel    schedule 21.11.2012
comment
@EricLaw помог мне с этим в Твиттере, и действительно, удаление FDM решило проблему для меня. До свидания, ФДМ!   -  person Nicholas    schedule 21.11.2012
comment
@EricLaw Это действительно была проблема! Не могли бы вы опубликовать ответ, который я могу принять? Спасибо.   -  person Emmanuel    schedule 21.11.2012
comment
Проблема существует для IE10 + Windows 7. Она была решена с помощью stackoverflow.com/a/13703096/309395.   -  person Nilesh Thakkar    schedule 15.01.2014
comment
Дубликат вызова Jquery Ajax работает во всех браузерах, кроме, например, 10   -  person Piotr Dobrogost    schedule 21.02.2014


Ответы (8)


Отредактировано

Тем не менее, Microsoft не исправит это, за исключением использования

<meta http-equiv="x-ua-compatible" content="IE=9" >

добавив указанный выше метатег, IE10 запустит ваш javascript в режиме, совместимом с IE9.

Старый ответ.

Я публикую пример кода для теста, который я сделал, и вы также можете использовать тот же код для своего кода.

<html>
<head runat="server">
    <script src="../Scripts/jquery-1.8.3.js"></script>
<script type="text/javascript">
    var xmlHttp = null;
    var XMLHTTPREQUEST_MS_PROGIDS = new Array(
      "Msxml2.XMLHTTP.7.0",
      "Msxml2.XMLHTTP.6.0",
      "Msxml2.XMLHTTP.5.0",
      "Msxml2.XMLHTTP.4.0",
      "MSXML2.XMLHTTP.3.0",
      "MSXML2.XMLHTTP",
      "Microsoft.XMLHTTP"
    );

    function makePOSTRequest(url, parameters) {

        if (window.XMLHttpRequest != null) {
            //xmlHttp = new window.XMLHttpRequest();
            xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
        } else if (window.ActiveXObject != null) {
            // Must be IE, find the right ActiveXObject.
            var success = false;
            for (var i = 0; i < XMLHTTPREQUEST_MS_PROGIDS.length && !success; i++) {
                alert(XMLHTTPREQUEST_MS_PROGIDS[i])
                try {
                    xmlHttp = new ActiveXObject(XMLHTTPREQUEST_MS_PROGIDS[i]);
                    success = true;
                } catch (ex) { }
            }
        } else {
            alert("Your browser does not support AJAX.");
            return xmlHttp;
        }
        xmlHttp.onreadystatechange = alertContents;
        xmlHttp.open('POST', url, true);
        xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
        //xmlHttp.setRequestHeader('Content-type', 'application/json;');
        xmlHttp.setRequestHeader('Content-Length', parameters.length);
        xmlHttp.setRequestHeader('Accept', 'text/html,application/xhtml+xml')
        //xmlHttp.setRequestHeader('Connection', "close");
        xmlHttp.send(parameters);
    }

    function alertContents() {
        // alert( this.status );
        if (xmlHttp.readyState == 4) {
            //alert( this.responseText );
            if (xmlHttp.status == 200) {
                var result = xmlHttp.responseText;
                //  document.getElementById('result').innerHTML = result;
                //  document.getElementById('submitbutton').disabled = false;
                alert(result);
            } else {
                //alert( this.getAllResponseHeaders() );
                alert("There was a problem with the request.");
            }
        }
    }
</script>
</head>
<body>
<a href="javascript:makePOSTRequest('/api/jobs/GetSearchResult','jtStartIndex=0&jtPageSize=10&jtSorting=jobDescription ASC&jobDescription=')">Click me please</a>
    GetJobDetail

    <br/><br/>
    Url: <input type="text" id="url" value="/api/jobs/GetSearchResult"/><br/>
    parameters: <input type="text" id="parameters" value="jtStartIndex=0&jtPageSize=10&jtSorting=jobDescription ASC&jobDescription="/><br/>
    submit : <input type="button" id="callMethod" value = "call" onclick="javascript: makePOSTRequest($('#url').val(), $('#parameters').val())"/>
</body>
</html>
person Cruiser KID    schedule 04.12.2012

У меня такая же проблема. Я думаю, что это ошибка, т.е. 10 настольная версия. работает на виндовс 8 про 64бит. похоже, что метод xhr.send не передает данные. он отлично работает во всех других браузерах и ie 10 в режиме метро или если вы переходите на стандарты ie9 в режиме рабочего стола.

person DeniroSA    schedule 07.11.2012
comment
Ошибка jQuery об этом bugs.jquery.com/ticket/12790 в основном просто подтверждает ваше наблюдаемое поведение, вы можете добавить комментарий/подписаться на ошибку. - person Nelson; 14.11.2012
comment
@Nelson Да, но сейчас они закрыли заявку, ошибка не кажется последовательной. - person Emmanuel; 16.11.2012
comment
У меня такая же проблема с настольной версией IE 10 ... все остальные браузеры работают отлично. ОЧЕНЬ Странный баг действительно... - person Jalal El-Shaer; 19.02.2013

Извините, но все мои попытки воспроизвести ваши проблемы не увенчались успехом. Другими словами, все POST-сообщения были с телом HTTP, и запросы Ajax работали правильно. Поэтому я не мог воспроизвести проблему, которую вы описали. Я провел все тесты в Internet Explorer 10, Windows 8 W64 RTM Enterprise со всеми текущими обновлениями Windows.

Если я добавлю какой-то товар (например, первый) в чат на странице вы упомянули, что я вижу, что запрос POST будет создан со следующим заголовком:

Anforderung       POST /~do HTTP/1.1
Accept            */*
Content-Type      application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With  XMLHttpRequest
Referer           https://www.steps.org.au/
Accept-Language   de-DE,de;q=0.8,ru;q=0.7,en-US;q=0.5,en;q=0.3,ja;q=0.2
Accept-Encoding   gzip, deflate
User-Agent        Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Touch)
Host              www.steps.org.au
Content-Length    81
DNT               1
Connection        Keep-Alive
Cache-Control     no-cache
Cookie            __utmc=91949528; __utma=91949528.365135675.1353268932.1353268932.1353268932.1; __utmb=91949528.1.10.1353268932; __utmz=91949528.1353268932.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=ka4shsgkfvnvfdcath2klh9un0; cartID=4a90a72a379989f597276ca30c79c6f6

Можно видеть, что Content-Length равно 81, а не 0. Тело

i=1211&q=1&token=00f5e9f5768d09ae67f2016ebcb62e99a0d75345&cmd=addToCart&sideBar=1

На запрос будет отправлен фрагмент HTML, а кнопка станет зеленой.

Точнее, при добавлении предмета в чат будет выполняться другой код, который вы указали в своем вопросе. Будет выполнен следующий код (строки 49-74) из shop.1352417874.js :

var n;
function inCart(i,t){
    var a = $('#add'+i);
    var q = t?1:$('#qty'+i).val();
    setLoader(a,(t?60:0),0);
    if(!t) a.addClass('loading').html('').attr('href','javascript:;');
    // d = 'i='+i+'&q='+q+'&token='+TOKEN+'&cmd=addToCart&sideBar=1';   
    $.ajax({
        data: {
            i:i,
            q:q,
            token:TOKEN,
            cmd:"addToCart",
            sideBar: 1
        },
        success: function(h){
            $('#sideCartContents').replaceWith(h);
            mkButtons();
            jsEnhance();
            setLoader();
            n=0;
            if(!t) a.removeClass('loading').addClass('green').attr('href','Shop/Checkout.html').html('Checkout').parent().find('div.QTY').html('<strong>x'+q+'</strong> <span class="inC">in cart</span>');
            flashCart();
        }
    });
}

В моем тесте значения локальных переменных i и q были 1211 и 1.

Так что я не мог видеть никаких ошибок, которые вы описываете. Поэтому вам нужно отлаживать код в той среде, в которой он будет воспроизводиться. При тестировании я бы рекомендовал вам использовать неминимизированный код jQuery. Вы можете отладить код jQuery.ajax, чтобы локализовать проблему.

Тем не менее, у меня есть несколько дополнительных советов для вас:

  1. Прежде всего, вы должны включить обратный вызов error в вызов $.ajax, а не только обратный вызов success.
  2. Вам следует просмотреть код JavaScript, который вы используете. Например, в приведенном выше фрагменте кода вы определили глобальную переменную n, которая будет свойством глобального объекта window. Введение таких переменных очень опасно из-за побочных эффектов и конфликтов с другими кодами JavaScript, которые вы включаете на страницу. В некоторых других местах новые свойства глобального window объекта задаются косвенно. Например, код глобальной doErrors функции, определенной в common. 1345011838.js выглядит следующим образом
function doErrors(e,d){
    e=e.split(',');
    for(i in e){
        $((d?d+' ':'')+'[name="'+e[i]+'"]:visible').addClass('error');
    }
    errors();
}

В приведенном выше коде вы используете переменную i без ее определения. Таким образом, вы устанавливаете (или используете) переменную window.i на пути. Понятно, что использование цикла for-in в случае массива не годится. Можно было бы переписать код эквивалентным кодом, например for(var i=0,l=e.length; i<l; i++) {...}.

Кроме того, вы начинаете код common.1345011838.js с

var w,r,i,p,t,l,c,z,e,m,b,k,u,s,CPH,TOKEN;
var z = new Array();
var ROOT;

которые определяют множество глобальных переменных с короткими именами. Это очень плохой стиль. Это может привести к конфликтам с другими модулями, которые вы включили. Обычно достаточно определить большинство переменных, которые вам нужны внутри какой-либо функции. Вы можете переместить объявление большинства переменных внутрь $(document).ready(function(){/*.HERE.*/});.

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

MYGLOBALCHATOBJECT = {
    root: "/",
    z: [],
};

...
// add new property
MYGLOBALCHATOBJECT.TOKEN = "some value";

Вы должны довериться, чтобы определить многие функции внутри контекста других функций. Таким образом, вы могли бы уменьшить необходимость определения многих глобальных переменных. Просто пример В приведенном выше коде inCart используется переменная n, определенная выше для функции inCart. Переменная n будет использоваться только внутри другой глобальной функции flashCart, определенной непосредственно после inCart. При этом функция flashCart будет использоваться только внутри обратного вызова success. Таким образом, вы можете переписать код так, чтобы вы определяли как n, так и flashCart внутри обратного вызова success:

...
success: function (h) {
    // define LOCAL variable n
    var n = 0;
    // define LOCAL function which can use outer variable n
    function flashCart(){
        if(n<3) { 
            setTimeout("flashCart()",120);
            n=n+1;
        }
        $('#sideCartBox').toggleClass('highlighted');
    }

    $('#sideCartContents').replaceWith(h);
    mkButtons();
    jsEnhance();
    setLoader();
    if(!t) a.removeClass('loading').addClass('green').attr('href','Shop/Checkout.html').html('Checkout').parent().find('div.QTY').html('<strong>x'+q+'</strong> <span class="inC">in cart</span>');
    flashCart(); // we use LOCAL function
}

Я бы порекомендовал вам дополнительно протестировать свой код в JSHint или JSLint.

person Oleg    schedule 18.11.2012
comment
Спасибо за ваш подробный ответ. Я рассмотрю то, что вы упомянули, Javascript не моя сильная сторона, и я в основном научился. Похоже, я приобрел несколько вредных привычек. Еще раз спасибо. - person Emmanuel; 19.11.2012
comment
@Emmanuel: Добро пожаловать! Три года назад я вообще не знал JavaScript. Так что я могу понять вас хорошо. Самое главное найти причину: почему тело POST пусто на вашем тестовом компьютере. - person Oleg; 19.11.2012
comment
Попробуйте десктопную версию IE10 — там она не работает. - person Nicholas; 21.11.2012
comment
@Nicholas: Извините, но я не знаю ни одной настольной версии IE10. Вы имеете в виду, что мой компьютер, на котором установлена ​​Windows 8, должен быть настольным компьютером, а не ноутбуком? Извините, но у меня нет настольных компьютеров, и я не верю, что IE10 по-разному отправляет запросы Ajax на разном оборудовании. Если у вас действительно есть компьютер, на котором вы можете воспроизвести программу, я бы порекомендовал вам отладить код JavaScript. - person Oleg; 21.11.2012
comment
@Oleg - IE10 в Windows 8 может работать в двух режимах: рабочий стол (где он выглядит как традиционное приложение Windows, с изменяемой рамкой и т. д.) и полноэкранный режим Touch/Metro. Режим Metro вроде работает нормально, а режим рабочего стола нет. - person Nicholas; 21.11.2012
comment
@Nicholas: я тестировал, просто запустив IE10 точно так же, как любое другое приложение. Комбинация клавиш Windows-R для запуска окна «Выполнить» и ввода URL-адреса. IE запускался как окно на том же рабочем столе, что и другое приложение. Поэтому я тестировал уже в режиме рабочего стола. Как я описал ранее, я не мог воспроизвести ни одной проблемы. Я считаю, что может существовать какая-то проблема. Так что могу повторить, что отлаживать проблему следует на том компьютере, где проблема может быть воспроизведена. - person Oleg; 21.11.2012
comment
У IE есть ошибка... jQuery создает объект window.XMLHttpRequest, который рекомендуется браузером, но который не может отправить запрос POST, даже если вы попытаетесь создать объект window.XMLHttpRequest, это не удастся, но если вы запустите свою страницу в IE 8/9 совместимом режиме с использованием панели инструментов IE Developer, Ajax Post будет работать. - person Cruiser KID; 04.12.2012
comment
Единственный способ работы — проверить браузер на сервере или клиенте, а затем создать ActiveXObject('Microsoft.XMLHTTP'); объект для IE, иначе используйте jquery... - person Cruiser KID; 04.12.2012
comment
@CruiserKID: я писал ранее, что считаю, что ошибка существует (в IE10 или в jQuery), но я не могу воспроизвести проблему на своем компьютере. Вы можете воспроизвести проблему? Если ответ «Да», не могли бы вы подробно описать, как можно воспроизвести проблему? - person Oleg; 04.12.2012
comment
на моем ноутбуке с win7 с ie10 RTM (KB2718695) проблема есть, даже на странице @Oleg, опубликованной выше Key Value Request POST /~do HTTP/1.1 Accept */* Content-Type application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With XMLHttpRequest Referer https://www.steps.org.au/ Accept-Language id-ID Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) Host www.steps.org.au Content-Length 0 Connection Keep-Alive Cache-Control no-cache выше, это созданный заголовок запроса, извините, я удаляю данные cookie, потому что это длинный пост - person am05mhz; 14.03.2013
comment
@am05mhz: я тебе верю. Проблема только в том, что я не могу воспроизвести проблему на моем ноутбуке win7 с ie10 RTM (KB2718695). Если я использую вкладку «Сеть» инструментов разработчика (нажмите F12) в 32-битной или 64-битной версии IE, я вижу, что непустое тело будет отправлено на страница. Попробуйте страницу на своем компьютере, пожалуйста. Нужно локализовать точные предварительные условия, которые позволяют воспроизвести проблему, которую вы описываете. Я написал в своем ответе только, что IE10 не является источником проблемы. - person Oleg; 14.03.2013
comment
@Oleg: извините за поздний ответ, только что попробовал страницу, на которую вы мне ответили, и теперь она работает как обычно, я также протестировал свой собственный сайт разработки и также обнаружил, что он работает нормально, я тоже не знаю, что было не так, когда он не работал, я отключил некоторые надстройки и перезапустил IE безрезультатно, но только сейчас он работает, может быть, ему также требуется перезагрузка системы? ну спасибо за помощь :) - person am05mhz; 20.03.2013
comment
@am05mhz: Добро пожаловать! Я считаю, что какая-то проблема существует, но точные условия не ясны. Так что, если вы найдете позже какую-нибудь демонстрацию проблемы, вы можете просто опубликовать мне дополнительную информацию о ней. - person Oleg; 20.03.2013
comment
@Oleg: вы можете записать эту скрипку в ie10 с помощью инструментов разработчика? Мой ie10 снова капризничает :( , это нормально на вашей машине? - person am05mhz; 15.04.2013
comment
@ am05mhz: я попробовал код на своем компьютере с Windows 7 x64 с установленным IE10, и я вижу в заголовках HTTP Content-Length: 5, и я вижу, что тело запроса - это a = sdf. Другой мой компьютер с Windows 8 x64 и IE10 показывает те же результаты. - person Oleg; 15.04.2013
comment
@Oleg: спасибо, кажется, мне нужно отследить, что изменилось в моем компьютере - person am05mhz; 15.04.2013
comment
@am05mhz: Прежде всего, я предлагаю вам запустить IE без каких-либо плагинов. Антивирусная программа может создавать проблемы, например. Вы можете запустить его с опцией "C:\Program Files\Internet Explorer\iexplore.exe" -extoff или просто запустить Internet Explorer (без надстроек) из меню Пуск->Все программы->Стандартные->Системные инструменты, а затем нажмите Internet Explorer (без надстроек). - person Oleg; 15.04.2013

Я также столкнулся с той же проблемой, ниже изменения сработали для меня.

<meta http-equiv="x-ua-compatible" content="IE=9" >

Работал для меня :)

person www.amitpatil.me    schedule 28.02.2013

Столкнувшись с той же проблемой, которую я не смог решить, установив <meta http-equiv="x-ua-compatible" content="IE=9">, я, однако, заставил это, установив заголовок ответа X-UA-Compatible на IE9, что является рекомендуемым способом, поскольку мета-заголовок не распознается валидаторами HTML5.

Для приложений J2EE этого можно добиться с помощью следующего фильтра:

public class IECompatibilityFilter implements Filter {
    private String compatibilityMode = "IE=10";
    public IECompatibilityFilter() {
    }
    public String getCompatibilityMode() {
        return compatibilityMode;
    }
    public void setCompatibilityMode(String compatibilityMode) {
        this.compatibilityMode = compatibilityMode;
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        String mode = filterConfig.getInitParameter("compatibilityMode");
        if (StringUtils.isNotBlank(mode)) {
            this.compatibilityMode = StringUtils.trim(mode);
        }
    }
    @Override
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
            throws IOException, ServletException {
        if (!response.isCommitted() && response instanceof HttpServletResponse) {
            HttpServletResponse httpResponse = (HttpServletResponse) response;
            httpResponse.addHeader("X-UA-Compatible", compatibilityMode);
        }
        chain.doFilter(request, response);
    }
    @Override
    public void destroy() {
    }
}

И регистрация в вашем web.xml.

<filter>
  <filter-name>ieCompatibilityFilter</filter-name>
  <filter-class>com.foobar.web.filter.IECompatibilityFilter</filter-class>
  <init-param>
    <param-name>compatibilityMode</param-name>
    <param-value>IE=9</param-value>
  </init-param>
</filter>
person Brett Ryan    schedule 07.06.2013

У меня что-то похожее (проблемы с загрузкой изображений из браузеров в Amazon S3), и я обнаружил, что в моем случае объект xhr дает сбой при последующем запросе http://some.server.com с https://my.local.server.com:123/foo. Он падает при вызове xhr.open("POST", httpUrl, true).

Вероятно, это ошибка IE10 (какой сюрприз ;) ), он падает как на Win7, так и на Win8.

person Saša    schedule 05.02.2013

У меня была такая же проблема, но только с одним запросом, я имею в виду, что у меня есть веб-приложение, которое обрабатывает много запросов ajax. Проверьте свою разметку. У меня была форма внутри таблицы для макета

<table>
    <form></form>
</table>

Я просто меняю по другому. форма > таблица.

person Ricbermo    schedule 02.04.2013

Похоже, возникла проблема с Window 8, выполняющая междоменные HTTPS-запросы. Я не могу подтвердить, имеет ли это какое-либо отношение к действительности сертификата, поскольку сертификат на моем междоменном сервере недействителен (сервер разработки).

Эта ссылка является обходным путем, но кто хочет загружать все свое приложение, чтобы сделать запрос GET только для IE10+? http://jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/

person Dog    schedule 30.10.2015