パラメータを追加した後、JQuery Ajax POSTがServerSide asp.netメソッドにヒットしなくなりました

asp.net javascript jquery
パラメータを追加した後、JQuery Ajax POSTがServerSide asp.netメソッドにヒットしなくなりました

パラメータを追加する前に、ユーザーが1つのコントロールから別のコントロールにフォーカスを設定するたびに、このPOSTメソッドがサーバーサイドコードにヒットしていました。 これは良かったのですが、IDと値のデータを渡す必要があります。 これらの値は、私の失敗のうなり声に集まるものから取り込まれています。

問題は、サーバーサイドルーチンにヒットしない理由が正確にわからないことです。 私はいくつかの助けのためにstackoverflowを見回しました、いくつかのことをきれいにしましたが、問題がどこにあるのかを正確に特定することはできませんでした。

$(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の世界では、まったく助けになると思います。

  1  1


ベストアンサー

あなたは近くにいましたが、フォームの値のコレクションではなく、JSONを投稿していることを思い出してください。 これは、http://www.json.org/ [トランスポート中にJSON文字列が引用される]を意味し、あなたの例では、おそらくあなたが本当に望んでいるものではなく、バックエンドで引用されます:

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

JSON(JavaScript * Object * Notation)を正しい方法で使用する場合は、次の例に従う必要があります。

http://encosia.com/using-complex-types-to-make-calling-services-less-complex/ [複合型を使用して、呼び出しサービスをより複雑にしない…​]

2


タイトルとURLをコピーしました