2012-06-27 3 views
3

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

Way 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); 
} 

Way 2

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

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

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

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

+2

Это будет сложно устранить, поскольку IE10 все еще находится в стадии бета-тестирования. – TNC

+0

Строго говоря, вызовы 'encodeURIComponent' должны быть ненужными, поскольку jQuery сделает это за вас. – lonesomeday

+0

использовал его без, ничего не исправить. –

ответ

-2

data: {email:email, password:pass} 

должен быть

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

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

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

Update

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

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

+0

http://api.jquery.com/jQuery.post/#example-1 $ .post ("test.php", {name: "John", time: "2pm"}); –

+1

email и pass будут работать, если вы не указали переменную электронную почту и не прошли. Поэтому, если вы не поместите его в кавычки, ключ будет значением этой переменной. – marteljn

+0

Gotcha, вещь, однако, вы не можете набрать {email, pass}, не так ли? –

0

После глубокого debuggind я нашел обходной путь для Bug 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)}); 
0

IE-10 не работает данных сериализации =>$ (это) .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" > 
0

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

Смежные вопросы