0

jQueryを使用してajaxリクエストを実行する場合、サーバーに送信されるデータに変数を追加する方法がわかりません。静的文字列を使用してリクエストを送信すると、正常に機能します。

$("#btnSubmit").click(function () {

                var inputtext = $("#txtInput").val();

                $.ajax({
                    type: "POST",
                    url: "Webform1.aspx/Function",
                    data: "{'ans':'hello'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        alert(msg.d);
                    }

                });
            });

上記は.net関数を呼び出してから、応答文字列を含むmsgboxを生成します。

ハードコードされた文字列'hello'を上記のinputtext変数などの変数に置き換えるにはどうすればよいですか。

以下は機能せず、json解析に関連する500エラーが発生します。

{'ans':inputtext}

{ans:inputtext}

{"ans":inputtext}

(ansは関数パラメーターの名前です)

編集:

リクエストサーバー側を処理するには、関数に.net WebMethod属性を使用します。これは、上記の例でハードコードされた文字列リクエストで機能しますが、データを使用して変数が渡されると、htmlページ全体を返します。{ans:inputtext} :

    [System.Web.Services.WebMethod]
    public static string Function(string ans)
    {

        return ans;
    }
4

3 に答える 3

2

これはうまくいくはずです:

$("#btnSubmit").click(function () {
    var inputtext = $("#txtInput").val();

    $.ajax({
        type: "POST",
        url: "Webform1.aspx/Function",
        data: {ans: inputtext},
        dataType: "json",
        success: function (msg) {
            alert(msg.d);
        }
    });
});

#btnSubmitフォーム内の実際の送信ボタンでない限り。

于 2013-02-15T00:05:00.023 に答える
0

ボタンクリックの代わりに送信イベントを使用した場合は、フォームへの参照を取得してから、すべてのフォームフィールドを含むフォームで.serializeを呼び出す方が簡単です。入力の[name]属性が「ans」である限り、その名前のjsonになります。私の例では、この動作が必要なフォームに「answerForm」クラスを追加することを前提としています。

.on('submit', '.answerFornm', function (e) {
  $.ajax({
  ...
    data: $(this).serialize(),
    contentType: "application/json; charset=utf-8",
  ...
于 2013-02-15T00:08:11.113 に答える
0

データオプションの値は奇妙に見えます。私は通常次の方法でそれを行います:

 $.ajax({
                    type: "POST",
                    url: "Webform1.aspx/Function",
                    data: {'ans':'hello'},
                    contentType: "application/json; charset=utf-8",

                    success: function (msg) {
                        alert(msg);
                    }

                });

dataTypeを削除しました: "json"、とにかくjsonがデフォルトだと思います

于 2013-02-15T00:05:13.807 に答える