Ajax-функция JQuery не вызывает внутренний метод в DNN - PullRequest
1 голос
/ 25 марта 2019

Я не могу заставить DotNetNuke выполнить бэкэнд-код из моей функции JQuery Ajax.У меня есть следующий код JQuery в моем файле View.ascx

Я пытался изменить URL-адрес на View.ascx / DeleteReviewData, но не повезло.

function deleteReview(ReviewID){
    var ReviewIDToDelete = ReviewID;
    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "https://dnndev.me/Product-View/DeleteReviewData",
        data: "{'deleteReviewID': '"+ ReviewIDToDelete +"'}",
        datatype: "json",
        success: function (data) {
            alert("Delete successfull");
        },
        error: function (error) {
            alert(error);
        }
    });
}

Это мой бэкэндкод, который не выполняется в файле View.ascx.cs:

[System.Web.Services.WebMethod]
    public static void DeleteReviewData(int deleteReviewID)
    {
        try
        {
            //Deletes a review from the database
            using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SiteSqlServer"].ToString()))
            {
                connection.Open();

                using (SqlCommand command = new SqlCommand($"delete from ProductReviews where ReviewID = {deleteReviewID}"))
                {
                    command.Connection = connection;
                    command.ExecuteNonQuery();
                }
                connection.Close();
            }
        }
        catch(Exception ex)
        {
            throw;
        }
    }

Если я должен использовать MapHttpRoute.У кого-нибудь есть пример, пожалуйста?

Я посмотрел следующий пост, но я не уверен в использовании RouteConfig.cs и дополнительных заголовков и т. Д.: https://www.dnnsoftware.com/answers/execute-an-action-by-calling-an-ajax-post

У меня нетКонсольные ошибки.Это идет в раздел успеха.Когда я нахожу указатель мыши на Type, ContentType или любой из них во время отладки, он говорит, что не определен.Смотрите пример ниже.Сайт использует JQuery 01.09.01

enter image description here

2-е изображение enter image description here

ОБНОВЛЕНИЕ

Я изменил URL, который теперь выдает ошибку 404: url: $.fn.GetBaseURL() + 'DesktopModules/ProductDetailedView/DeleteReviewData'

Я также пробовал этот путь URL с добавлением API API/DeleteReviewData, но я получаю [объектObject] error, поскольку в консоли отображается ошибка 404.

1 Ответ

2 голосов
/ 25 марта 2019

Это пример:

    $.ajax({
        data: { "Id": IdToDelete },
        type: "POST",
        dataType: "json",
        url: "/DesktopModules/{API-ProjectName}/API/Main/DeleteExpenseByID"
    }).complete(function () {
        //...
    });

Метод API:

    [HttpPost]
    [DnnAuthorize]
    public void DeleteExpenseByID(int Id)
    {
       //...
    }

Вам нужно отправить номер, чтобы вам не нужно было "" ", окружающее ReviewIDToDelete var.

Также проверьте DeleteReviewData для атрибута [POST], похоже, это вызов [GET].

...