我无法让DotNetNuke从我的JQuery Ajax函数执行后端代码。我的View.ascx文件中有以下JQuery代码
我确实尝试将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
我目前没有收到Console错误。它转到成功部分。当我将鼠标悬停在Type,ContentType或其中任何一个调试时,它表示未定义。见下面的例子。该网站使用的是JQuery 01.09.01
UPDATE
我已经更改了URL,现在给我一个404错误:url: $.fn.GetBaseURL() + 'DesktopModules/ProductDetailedView/DeleteReviewData'
我还尝试添加API API/DeleteReviewData
这个URL路径,但是我收到[object Object]错误,因为它在控制台中显示404错误。
这是一个例子:
$.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]调用。