2013-12-17 4 views
0

У меня проблема с IE, связанная с jQuery и ajax. Chrome и Firefox работают нормально, но мои аймакс-звонки исчезают в IE.IE 9, 10, 11 - Ajax звонки не возвращаются

После выполнения вызова ajax ни функции success, ни функции fail не вызываются. Я вижу ответ в консоли IE, и я знаю, что действие моего контроллера ударяется.

$.ajax({ 
    url: controllerUrl 
    type: 'POST', 
    dataType: 'json', 
    cache: false, 
    data: { 
     id: customerId 
    }, 
    success: function() { 
     alert('success!'); 
    }, 
    error: function() { 
     alert('failed!'); 
    } 
}); 

Кто-нибудь еще видел эту проблему?

+0

строй() является методом интерфейса обещания: '$ .ajax ({...}) .fail (function() {alert ('failed!');}); ' –

+0

Вы видите, как запускается запрос AJAX в инструментах dev? Вы уверены, что он возвращает действительный JSON? Это в одном домене? –

+0

Нажмите F12 и прочитайте консоль после обновления страницы и попыток запроса ajax. –

ответ

2
fail: function() { 
     alert('failed!'); 
    } 

fail не является допустимым параметр Ajax Jquery. Я считаю, что вы ищете error.

Также cache: false, ничего не делает с POST запросами.

Примечание, jQuery не Добавить временную марку с запросами POST.

Исходный код наглядно демонстрирует это. (Суммируется из https://github.com/jquery/jquery/blob/master/src/ajax.js)

var rnoContent = /^(?:GET|HEAD)$/; 
s.hasContent = !rnoContent.test(s.type); 
if (!s.hasContent) { 
    /* code to append time stamp */ 
} 
+1

'cache: false' делает что-то в сообщениях ... он добавляет временную метку в качестве параметра URL – FastTrack

+0

@FastTrack Насколько вы уверены в этом? =) –

+0

http://api.jquery.com/jQuery.ajax/: 'Установка кеша в false будет работать только с HEAD и GET-запросами ... Параметр не нужен для других типов запросов, за исключением IE8, когда POST делается для URL-адреса, который уже запрошен GET.' –

0

Вы пропускаете запятую , после параметра URL:

$.ajax({ 
    url: controllerUrl, // <--- you were missing this comma! 
    type: 'POST', 
    dataType: 'json', 
    cache: false, 
    data: { 
     id: customerId 
    }, 
    success: function() { 
     alert('success!'); 
    }, 
    error: function() { 
     alert('failed!'); 
    } 
}); 
+1

Если эта первая запятая отсутствовала, это не сработало бы * * браузера *. –

+0

@BradM, что абсолютно НЕ верно. Я видел это много раз раньше с помощью множества вызовов AJAX. – FastTrack

+1

@FastTrack: Я сомневаюсь. http://jsfiddle.net/LGN7J/ –

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