3

次のように英数字のパラメーターを渡そうとすると、JQuery がエラーを出すようです。

            $.ajax({
                type: "POST",
                url: "Default.aspx/AjaxTest",
                data: "{eventID:9a5}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    alert(msg.d);
                },
                error: function(e) {
                    alert("Event could not be added to calendar");
                }
            });

上記のメソッドが呼び出されると、エラー コールバックが呼び出されます。ただし、eventID パラメーターを純粋な数値に変更すると、正常に機能し、成功のコールバックが呼び出されます。英数字の値をサーバー メソッドに渡したいのですが、うまくいきません。どんな助けでも大歓迎です。

アーメド

4

2 に答える 2

4

通常のJavascript辞書のようにデータを渡すべきではありませんか?

$.ajax({
...
data: {"eventID": "9a5", "SomeNumericField": 25}
...
});

(例:データを引用符で囲まないでください。そのような文字列ではないはずです。)

于 2009-10-25T12:58:37.970 に答える
1

この問題を解決する方法を学びました。「無効な JSON プリミティブ」という JSON エラー メッセージが表示されました。文字列パラメーターを一重引用符で囲む必要があったため、JSON はそれが逆シリアル化されたときに文字列であることを認識していました。JSON が文字列であることを理解できるように、英数字データを一重引用符で囲みました。これが私のコードがどのように機能するかです:

        $.ajax({
            type: "POST",
            url: "Default.aspx/AjaxTest",
            data: "{eventID:'9a5'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                alert(msg.d);
            },
            error: function(e) {
                alert("Event could not be added to calendar");
            }
        });

とにかくありがとう。

于 2009-10-25T13:44:43.783 に答える