Удалить изображение из папки с помощью AJAX C # - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь удалить изображение из папки с помощью AJAX и C #.Я создал обработчик с именем Delete.ashx для удаления изображения.У меня также есть функция AJAX, чтобы получить путь к изображению и передать путь к обработчику

В AJAX у меня есть переменная, которая получает путь, который хранится в текстовом поле (только сейчас).Я пытаюсь передать этот путь моему обработчику, однако проблема в том, что переменная в обработчике, к которому я пытаюсь передать путь данных, всегда пуста.

Вот мой код:

Обработчик

public void ProcessRequest(HttpContext context)
{
    string sFileName = context.Request["sFileName"]; //this variable is always empty
    if (File.Exists(context.Server.MapPath("~/images/" + sFileName)))
    {
        File.Delete(context.Server.MapPath("~/images/" + sFileName));
        context.Response.ContentType = "text/plain";
        context.Response.Write("Image deleted Successfully!");
    }
    else
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Image Failed to Delete!");
    }
}

AJAX

$(document).ready(function () {
    $("#btnDelete").click(function () {
        removeFile();
        return false;
    });

    function removeFile() {
        var FileName = $("#txtPath").val();
        $.ajax({
            url: 'Delete.ashx',
            type: 'POST',
            data: { 'sFileName': FileName},
            contentType: false,
            processData: false,
            success: function (result) {
                alert(result);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(xhr.responseText);
                alert(thrownError);
            }
        });

    }

});

Посоветуйте, пожалуйста, как передать данные из AJAX в обработчик, чтобы переменная не была пустой.Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

С помощью Меннана я сделал следующее и работает:

    public void ProcessRequest(HttpContext context)
    {
        string sFileName = context.Request["sFileName"];
        if (File.Exists(context.Server.MapPath("~/images/" + sFileName)))
        {
            File.Delete(context.Server.MapPath("~/images/" + sFileName));
            context.Response.ContentType = "text/plain";
            context.Response.Write("Image deleted Successfully!");
        }
        else
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Image Failed to Delete!");
        }
    }


function removeFile() {
    var FileName = $("#txtPath").val();
    $.ajax({
        url: 'Delete.ashx?sFileName=' + FileName,
        type: 'POST',
        data: { 'sFileName': FileName},
        contentType: false,
        processData: false,
        success: function (result) {
            alert(result);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(xhr.responseText);
            alert(thrownError);
        }
    });

}
0 голосов
/ 09 октября 2018

попытаться получить контекст из текущего HttpContext:

1

public void ProcessRequest(HttpContext context)
{
    var context_= System.Web.HttpContext.Current;
    string sFileName = context_.Request["sFileName"];
    if (File.Exists(context_.Server.MapPath("~/images/" + sFileName)))
    {
        File.Delete(context_.Server.MapPath("~/images/" + sFileName));
        context_.Response.ContentType = "text/plain";
        context_.Response.Write("Image deleted Successfully!");
    }
    else
    {
        context_.Response.ContentType = "text/plain";
        context_.Response.Write("Image Failed to Delete!");
    }
}

2

Или отправить данные с помощью строки запроса из ajax

 modify ajax:
 url: 'Delete.ashx?sFileName=blabla',

 server side:
 var sFileName= Request.Form["sFileName"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...