JQuery Ajax 函数不调用 DNN 中的后端方法
JQuery Ajax function not calling backend method in DNN
我无法让 DotNetNuke 从我的 JQuery Ajax 函数执行后端代码。
我的 View.ascx 文件
中有以下 JQuery 代码
我曾尝试将 URL 更改为视图。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);
}
});
}
这是我的 back-end 代码,它没有在 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。请问有人有例子吗?
我查看了以下 post,但我不确定是否使用 RouteConfig.cs 和额外的 headers 等等:https://www.dnnsoftware.com/answers/execute-an-action-by-calling-an-ajax-post
我目前没有收到任何控制台错误。它进入成功部分。
当我在调试时将鼠标悬停在类型、内容类型或其中任何一个上时,它显示未定义。请参见下面的示例。该站点正在使用 JQuery 01.09.01
第二张图片
更新
我更改了 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] 调用。
我无法让 DotNetNuke 从我的 JQuery Ajax 函数执行后端代码。 我的 View.ascx 文件
中有以下 JQuery 代码我曾尝试将 URL 更改为视图。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);
}
});
}
这是我的 back-end 代码,它没有在 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。请问有人有例子吗?
我查看了以下 post,但我不确定是否使用 RouteConfig.cs 和额外的 headers 等等:https://www.dnnsoftware.com/answers/execute-an-action-by-calling-an-ajax-post
我目前没有收到任何控制台错误。它进入成功部分。 当我在调试时将鼠标悬停在类型、内容类型或其中任何一个上时,它显示未定义。请参见下面的示例。该站点正在使用 JQuery 01.09.01
第二张图片
更新
我更改了 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] 调用。