Asp.net Valums文件上载程序xhr返回状态0、readystate 4和responseText空

Asp.net Valums文件上载程序xhr返回状态0、readystate 4和responseText空,asp.net,xmlhttprequest,file-upload,responsetext,readystate,Asp.net,Xmlhttprequest,File Upload,Responsetext,Readystate,我正在asp.net web应用程序中使用valums fileuploader。它可以很好地处理实际的上传。但在Chrome和FF中,错误条件检查无法正常工作。上载程序指向名为fileupload.ashx的处理程序,该处理程序检查是否已存在同名文件。c代码如下所示 if (File.Exists(Path.Combine(path, fileName))) { returnJson = "{success:false, error:'Duplicate filename'}";

我正在asp.net web应用程序中使用valums fileuploader。它可以很好地处理实际的上传。但在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; } xhr.onreadystatechange = function() { if (xhr.readyState == 4) { self._onComplete(id, xhr); } }; 如果(File.Exists(Path.Combine(Path,fileName))) { returnJson=“{success:false,error:'Duplicate filename'}”; context.Response.ContentType=“text/plain”; context.Response.Write(returnJson); 返回; } 我在result.error属性中预期会出现上述错误消息。经过一些javascript调试后,我发现这段代码在IE8中运行良好,但在Chrome和FF中却不起作用。传输失败时,xhr responseText包含空字符串

valums fileuploader.js中的javascript片段如下所示

if (File.Exists(Path.Combine(path, fileName))) { returnJson = "{success:false, error:'Duplicate filename'}"; context.Response.ContentType = "text/plain"; context.Response.Write(returnJson); return; } xhr.onreadystatechange = function() { if (xhr.readyState == 4) { self._onComplete(id, xhr); } }; xhr.onreadystatechange=函数(){ if(xhr.readyState==4){ 自我完成(id,xhr); } };
令人惊讶的是,即使在Chrome和FF中,当上传成功时,responseText也会正确返回。非常感谢您的帮助。

我不太清楚为什么fileupload.ashx中有此代码

context.Response.ContentType = "text/plain";
这应该是

context.Response.ContentType = "application/json";
因为返回值的类型是JSON


希望这有帮助。

假设您希望一次上载一个文件,那么Ajax控件工具包中的AsyncFileUpload控件对于ASP.Net来说是一个有用的替代选项。