JQuery AJAX发布到asp.net webmethod永远不会被调用

ddd*_*ddd 3 jquery ajax.net webmethod

我在我的一个aspx页面中有一个web方法:

[WebMethod]
public static string AddDebt(int userId, int type, string description, float amount)
Run Code Online (Sandbox Code Playgroud)

在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);
                }
            });

        });
Run Code Online (Sandbox Code Playgroud)

我知道我设置数据参数的方式看起来很愚蠢,但之前它更干净,我会改变它,但重点是,JSON对我来说似乎不错,所以不是吗?

当它运行时,没有发布到Web方法,但如果我更改contentType和dataType,我将返回整个aspx页面.我刚才想到的一件事,就是说这个jquery实际上是在register_borrower_step4.aspx页面上,会不会引起问题呢?

Dar*_*rov 7

该方法不期望一个数组.试试这样:

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

还要确保浮点分隔符根据amount参数的区域性是正确的.区分.和/ ,或web方法可能不起作用.要进一步分析任何问题,您可以使用FireBug查看封面下发生的具体情况.