jquery ajax $.post не работает IE10

Я пробовал это двумя способами.

Способ 1

function Login() {
    var email = encodeURIComponent($("#loginemail").val());
    var pass = encodeURIComponent($("#password").val());
    $.ajax({
        url:"/user/login",
        type: "POST",
        data: {email:email, password:pass},
        dataType: "json"
    }).done(LoginDone);
    //$.post("/user/login", {email:email, password:pass}, LoginDone);
}

Способ 2

    function Login() {
        var email = encodeURIComponent($("#loginemail").val());
        var pass = encodeURIComponent($("#password").val());
        $.post("/user/login", {email:email, password:pass}, LoginDone);
    }

Оба способа отлично работают в Chrome, но по какой-то причине IE не отправляет данные {email:email, password:pass} в POST или вообще не отправляет.

Я пробовал как на локальном сервере, так и на живом веб-сервере, оба с теми же результатами.

Использование IE10 здесь.


person Kelly Elton    schedule 27.06.2012    source источник
comment
Это будет сложно устранить, так как IE10 все еще находится в стадии бета-тестирования.   -  person TNC    schedule 28.06.2012
comment
Строго говоря, вызовы encodeURIComponent не нужны, так как jQuery сделает это за вас.   -  person lonesomeday    schedule 28.06.2012
comment
использовал его без, ничего не исправляет.   -  person Kelly Elton    schedule 28.06.2012
comment
сравните консольную проверку запроса с представлением IE9 или IE8 и посмотрите, в чем различия. Также добавьте обработчик ошибок в $.ajax. "not working" не так много информации для работы   -  person charlietfl    schedule 28.06.2012
comment
Я вижу проблему в своем коде (который не использует код JSON, но использует «object.varible = value»), и другие люди могут воспроизвести.   -  person Moshe L    schedule 28.12.2012


Ответы (6)


<удар>

data: {email:email, password:pass}

должно быть

data: {"email":email, "password":pass}

Вы передаете значение переменных в качестве ключа, поэтому, если ваш ресурс на стороне сервера ожидает email, он фактически видит значение этой переменной encodeURIComponent($("#loginemail").val()).

Скорее всего, это не проблема IE10, это не должно работать так, как написано в любом браузере.

Обновить

Этот ответ может быть неприменим из-за исправления ошибок в IE 10.

Пожалуйста, не обращайте внимания на этот ответ, он неверен и не может быть удален из-за того, что он принят.

person marteljn    schedule 28.06.2012
comment
api.jquery.com/jQuery.post/#example-1 $ .post(test.php, {имя: Джон, время: 14:00}); - person Kelly Elton; 28.06.2012
comment
email и pass будут работать, если вы не назовете переменную email и pass. Поэтому, если вы не поместите его в кавычки, ключ будет значением этой переменной. - person marteljn; 28.06.2012
comment
Попался, дело в том, что вы не можете ввести {email,pass}, не так ли? - person Kelly Elton; 28.06.2012
comment
Нет, но это допустимый объектный литерал {"email":email, "password":pass}, поэтому кодируйте его точно так же. И в качестве исправления это проблема только с электронной почтой. Ваш пароль должен работать как есть. Я знаю, что вы имеете в виду под документом JQuery, но он работает так же хорошо, как я написал выше. - person marteljn; 28.06.2012
comment
Работает на ie9, должно быть ошибка. В любом случае, хороший совет. - person Kelly Elton; 28.06.2012
comment
Ключи в литералах объектов Javascript можно не заключать в кавычки, если они не являются зарезервированными словами. Ни email, ни password не зарезервированы. Следовательно, проблема с IE10 должна быть в чем-то другом - не сразу понятно, в чем она может быть. - person Beetroot-Beetroot; 28.06.2012
comment
Тем не менее, эта страница рекомендует избегать password (и многих других незарезервированных слов). - person Beetroot-Beetroot; 28.06.2012
comment
Это все еще проблема с IE10 RTM, которую я использую сейчас. На самом деле я не мог опубликовать этот комментарий в стандартном режиме IE10, и мне пришлось переключиться на режим IE9! - person Andrew Harry; 08.10.2012
comment
@AndrewHarry У меня та же проблема. Мне пришлось принудительно перевести мой сайт в режим IE9, чтобы он работал.. :-/ - person Nicholas; 13.11.2012
comment
Та же проблема здесь. IE 10 пытается загрузить сообщение json. - person Mike; 11.12.2012
comment
Почему это неправильно? В то время свежая копия Internet Explorer и jquery могла вызвать эту проблему. Я полагаю, что IE10 едва вышел за дверь, поэтому они могли бы устранить ошибку, сделав ваш ответ неактуальным, я полагаю. Какой ответ вы бы предложили в качестве правильного? - person Kelly Elton; 14.05.2014
comment
@ kelton52 Я повторно обновил его, указав, что он может больше не применяться, а не «неправильный». - person marteljn; 14.05.2014

Не удается исправить средство отслеживания ошибок @jQuery: публикация AJAX в IE10/Windows 8

person VahidN    schedule 05.12.2012

После глубокой отладки я нашел обходной путь для ошибки IE10 AJAX POST:

не используйте POST с GET.

$.post("Page.aspx?action=edit",a,function(data) {dataRow[0]=data; GoToShowMode(row)});

изменить на

a.action=edit;
$.post("Page.aspx",a,function(data) {dataRow[0]=data; GoToShowMode(row)});
person Community    schedule 28.12.2012

IE-10 не поддерживает сериализацию данных => $(this).serialize()

 $('#formLogin').submit(function () {

        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            cache: false,
            success: function (data) {

                var val1 = "";
                var val2 = "";

                $.map(data, function (item) {
                    val1 = item.success;
                    val2 = item.URL;
                });

                if (data[0].messageCode == "success") {
                    GoGO(data[0].URL);
                }
                else {
                    alert(data[0].message);
                }
            }
        });
        return false;
    });

Для этого вы можете использовать эту строку в _layOut.chtml перед метатегом. Итак, IE-10 работает так же, как IE-9.

  <meta http-equiv="x-ua-compatible" content="IE=9" >
person Md. Nazrul Islam    schedule 05.04.2013

Попробуйте следующее: http://code.gishan.net/code/solution-to-ie10-ajax-problem У меня работает. Это известная проблема IE10.

person henryP    schedule 07.04.2013

У меня была такая же проблема с IE 10 (10.0.9200.16521) на Win7 x64 SP1. Я решил проблему, просто используя более новую версию jQuery (1.9.1 вместо 1.8.3).

person cardy    schedule 07.04.2013