Вернуть ответ на ajax из обработчика generi c http - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть обобщенный 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"}
...