У меня есть обобщенный c обработчик для обработки загрузки файлов. Он вызывается через вызов ajax, и мне нужно вернуть успех / неудачу обратно на ajax. Я могу отправить ответ обратно, но, прежде чем нажать «успех» вызова ajax, он пытается напечатать сообщение или отобразить его в окне и выдает ошибку; тогда это идет к "успеху", где я могу исследовать данные. Я загружаю несколько файлов, используя FileUpload с набором «множественные».
$("#btnUpload").click(function (e) {
var uploadfiles = $("#MultipleFilesUpload").get(0);
var uploadedfiles = uploadfiles.files;
var formdata = new FormData();
for (var i = 0; i < uploadedfiles.length; i++) {
formdata.append("file", $("#MultipleFilesUpload").prop("files")[i]);
}
$.ajax({
url: '<%= ResolveUrl("../Controller/UploadHandler.ashx") %>',
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: formdata,
type: 'post',
success: function(data) {debugger
},
error: OnFail
});
});
Обработчик:
public void ProcessRequest(HttpContext context)
{
var MessageData = new object();
if (context.Request.Files.Count > 0)
{
HttpFileCollection SelectedFiles = context.Request.Files;
for (int i = 0; i < SelectedFiles.Count; i++)
{
HttpPostedFile PostedFile = SelectedFiles[i];
string fn = PostedFile.FileName;
if (fn.LastIndexOf('\\') > 0)
fn = fn.Substring(fn.LastIndexOf('\\') + 1);
string FileName = context.Server.MapPath("~/UploadedFiles/" + fn);
PostedFile.SaveAs(FileName);
}
MessageData = new
{
Success = "true",
Message = "Files Uploaded Successfully"
};
}
else
{
MessageData = new
{
Success = "false",
Message = "Please select file(s)"
};
}
string JSONresult = JsonConvert.SerializeObject(MessageData);
// This is the only way I can see how to return the result. But when I debug through VS, it first displays the message above, then goes to "Success"
context.Response.ContentType = "text/json";
context.Response.Write(JSONresult);
}
Я вижу ошибку:
JavaScript critical error at line 1, column 11 in (unknown source location)\n\nSCRIPT1004: Expected ';'
и в VS, он открывает страницу «script script [dynamic]» с текстом ниже и сообщением об ошибке:
{"Success":"true","Message":"Files Uploaded Successfully"}