Загрузчик файла значений xhr возвращает статус 0, состояние готовности 4 и текст ответа пуст - PullRequest
4 голосов
/ 14 марта 2011

Я использую valums fileuploader в веб-приложении asp.net. Он отлично работает с фактическими загрузками как таковыми. Но проверка состояния ошибки не работает должным образом в Chrome и FF. Загрузчик указывает на обработчик с именем fileupload.ashx, который проверяет, существует ли файл с таким именем. Код C # приведен ниже ...

if (File.Exists(Path.Combine(path, fileName)))
{
    returnJson = "{success:false, error:'Duplicate filename'}";
    context.Response.ContentType = "text/plain";
    context.Response.Write(returnJson);
    return;
}

Я ожидал сообщения об ошибке выше в свойстве result.error. После некоторой отладки JavaScript я обнаружил, что этот код хорошо работает для IE8, но не в Chrome и FF. Xhr responseText содержит пустую строку в случае сбоя передачи.

Ниже приведен фрагмент JavaScript из valums fileuploader.js ...

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        self._onComplete(id, xhr);
    }
};

Удивительно, но responseText правильно возвращается даже в Chrome и FF, когда загрузка прошла успешно. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 29 октября 2012

Я не совсем уверен, почему в fileupload.ashx есть этот код ...

context.Response.ContentType = "text/plain";

это должно быть ...

context.Response.ContentType = "application/json";

, так как возвращаемое значениеимеет тип JSON.

надеюсь, это поможет.

...