Загрузчик файлов Valums xhr возвращает статус 0, readystate 4 и пустой responseText

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

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, когда загрузка прошла успешно. Любая помощь будет оценена.


person Rohit Sahasrabudhe    schedule 14.03.2011    source источник
comment
Предполагая, что вы хотите загружать один файл за раз, элемент управления AsyncFileUpload в наборе инструментов управления Ajax может быть полезной альтернативой для ASP.Net.   -  person Pankaj Kumar    schedule 29.12.2011


Ответы (1)


Я не совсем понимаю, почему в файле fileupload.ashx есть этот код...

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

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

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

поскольку возвращаемое значение имеет тип JSON.

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

person benjieb    schedule 29.10.2012