2016-09-15 14 views
0

Я разработал страницу, которая отправляет форму с изображением на контроллер WebAPI2 через AJAX.Почему JQuery AJAX прерывисто возвращает ошибку 0?

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

Это отлично работает для меня, оно отлично работает для тех, кто его протестировал, но у меня есть один тестер из 8-ти, кто получает прерывистые ошибки в IE. Он не попробует его в другом браузере (у нас нет реальных тестировщиков, просто у наших пользователей, и этот упрям)

Мой серверный код api, который является частью того же проекта, даже не является удар. Я записываю, что мы ввели метод сразу с места в карьер. Кроме того, в журналах приложений для сервера не регистрируется ошибка. AJAX возвращает «error» и «0». Текст ответа отсутствует. Я регистрирую все ошибки AJAX на адрес сервера (который представляет только прекрасный, BTW)

Я изначально написал это с помощью MVC-контроллера вместо веб-API, но я переключился в надежде, что это решит проблему. Это не так.

Кнопка, которая «отправляет» форму, не является кнопкой отправки. Он вводится = «кнопка». У меня нет кнопки отправки в моей форме. У формы нет адреса для публикации. Я блокирую всю форму, так что ни одна кнопка не может быть нажата, никакие элементы не могут быть отредактированы, а элементы загружаются. В заключение я не вижу, что e.preventDefault(); было бы полезно.

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

Иногда он представляет форму и 1/3 загрузки изображений и остальную ошибку. Это не тип изображения, размер или любое из них. Я скопировал изображения, которые он загружал, и использовал их для проверки.

Мы отключили межсайтовый скриптинг на стороне сервера, и я добавил форматировщик JSONP на свою сторону, и он протестировал его без ошибок. Мы будем продолжать проверять, действительно ли это решило проблему, потому что он работал до этого, а затем снова появился вопрос.

Если это действительно межсайтовый скриптинг, вызывающий его, почему? Может ли быть что-то на сервере IIS, что заставляет его выбирать другой домен верхнего уровня, поскольку я не указываю его в своем аякс-запросе?

$.ajax({ 
    url: getBaseURL() + 'API/FileForm', 
    type: 'POST', 
    data: dataString, 
    cache: false, 
    contentType: false, 
    processData: false 
}) 

Где getBaseURL() говорит:

function getBaseURL() { 
    var baseURL = $("#HiddenCurrentURL").val().trim(); 
    if (baseURL != "/") { 
     baseURL += "/"; 
    } 
    return baseURL; 
} 

С HiddenCurrentURL Находясь в моем _layout:

@Html.Hidden("HiddenCurrentURL", Request.ApplicationPath) 

Любая помощь будет оценена. Я не совсем уверен, что делать сейчас. Могут ли настройки браузера?

Редактировать: Он использует IE 11 - как я, так и другие тестеры. У меня есть и так еще несколько других, протестированных в Chrome и Firefox.

Edit2: Мы отключили межсайтовый скриптинг, и проблема продолжалась. Я думаю, что интересно отметить, что проблема, похоже, происходит только ночью или рано утром, в нерабочее время для работы. Я проверил с группой IIS, и они сказали, что он работает как «всегда включен», хотя ...

+0

Возможно, это связано с версией IE. Можете ли вы предоставить версию IE? – Hackerman

+0

@Hackerman Не уверен, что он скажет, что я добавил, но версия IE 11 - для всех тестеров. – nebulous

ответ

0

У пользователя плохое соединение wifi и он отключается на долю секунды. Он прерывает запросы ajax - те, которые еще не отправлены, по-прежнему будут отправляться, а те, которые достигли сервера, будут завершены, остальные не удастся.

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