我的一个 aspx 页面中有一个 Web 方法:
[WebMethod]
public static string AddDebt(int userId, int type, string description, float amount)
在 aspx 页面中我有 JQuery
$(".addDebt").click(function (e) {
e.preventDefault();
var userId = $("[id$='txtUserId']").val();
var type = $("[id$='ddlExistingDebtType']").val();
var description = $("[id$='txtExistingDebtLender']").val();
var amount = $("[id$='txtExistingDebtAmount']").val();
var results = new Array();
results.push({ userId: userId });
results.push({ type: type });
results.push({ description: description });
results.push({ amount: amount });
var dataString = JSON.stringify(results);
$.ajax(
{
type: "POST",
url: "register_borrower_step4.aspx/AddDebt",
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
$(".pDebtsTable").text(result);
}
});
});
我知道我设置数据参数的方式看起来很愚蠢,但之前它更干净,我会更改它,但重点是,JSON 对我来说似乎很好,所以不是吗?
当它运行时,不会发布到 Web 方法,但如果我更改 contentType 和 dataType,我会返回整个 aspx 页面。我刚刚想到一件事,假设这个jquery实际上位于register_borrower_step4.aspx页面上,这会导致问题吗?
最佳答案
该方法不需要数组。尝试这样:
var dataString = JSON.stringify({
userId: userId,
type: type,
description: description,
amount: amount
});
$.ajax({
type: "POST",
url: "register_borrower_step4.aspx/AddDebt",
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
$(".pDebtsTable").text(result);
}
});
还要确保浮点分隔符根据 amount
参数的区域性正确。请区分 .
和 ,
,否则 Web 方法可能无法正常工作。要进一步分析任何问题,您可以使用 FireBug准确了解幕后发生的事情。
关于JQuery AJAX 发布到 asp.net webmethod 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3529953/