Javascript 添加参数后,JQuery Ajax POST不再命中服务器端asp.net方法

Javascript 添加参数后,JQuery Ajax POST不再命中服务器端asp.net方法,javascript,asp.net,jquery,Javascript,Asp.net,Jquery,在添加任何参数之前,每当用户将焦点从一个控件设置到另一个控件时,我都会让这个POST方法命中我的服务器端代码。这很好,但我需要传递id和值的数据。这些值是从我的失败咆哮中收集的内容填充的 问题是我不知道为什么它不再影响我的服务器端例程。我确实环顾四周寻求帮助,我确实清理了一些东西,但我无法准确指出我的问题所在 $(document).ready(function () { var id; var value; $(".tpControl").blur(function

在添加任何参数之前,每当用户将焦点从一个控件设置到另一个控件时,我都会让这个POST方法命中我的服务器端代码。这很好,但我需要传递id和值的数据。这些值是从我的失败咆哮中收集的内容填充的

问题是我不知道为什么它不再影响我的服务器端例程。我确实环顾四周寻求帮助,我确实清理了一些东西,但我无法准确指出我的问题所在

$(document).ready(function () {
    var id;
    var value;

    $(".tpControl").blur(function () {

        id = this.id;
        value = $(this).val();

        var postdata = { identifier: id, controltext: value };

        $.ajax({
            type: "POST",
            url: "TimePoints.aspx/ClientSideSave",
            contentType: "application/json; charset=utf-8",
            data: postdata,
            dataType: "json",
            success: function (msg) {
                if (msg.hasOwnProperty("d")) {
                    OnSuccess(msg.d);
                } else {
                    OnSuccess(msg);
                }
            },
            error: OnFailure
        });
    });

    function OnSuccess(result) {
        $.growlUI('AutoSave Successful');
    }

    function OnFailure(result) {
        $.growlUI("ID: " + id, "Answer: " + value);
    }
});
我的服务器端非常简单

    [WebMethod]
    public static void ClientSideSave(string identifier, string controltext)
    {
       //Bunch of code, shouldn't affect anything.
    }

先谢谢你。任何帮助都会很好,我对Jquery和Ajax的世界还很陌生。

您很接近,但请记住您发布的是JSON,而不是表单值集合。这意味着,在您的示例中,将在后端引用,可能不是您真正想要的:

var postdata = "{ 'identifier': 'id', 'controltext': 'value' }";

如果您希望以正确的方式使用JSON(JavaScriptObjectNotation),那么您应该遵循以下示例:


我不认为“id”或“value”应该在这里加引号。我将把它命名为金星,因为这让我找到了我需要去的地方,并且有一些有用的链接。我的确切语法是
$var postdata=“{'identifier':'“+id+”,'controltext':'“+value+”}”现在我的服务器端方法被命中并传递我需要收集的变量数据。非常感谢你的帮助。