1

私はこの方法を試してみて、c# webforms コードの背後にある jquery シリアル化されたデータを取得する必要があります。

jQuery.ajax({
            type: "POST",
            url: "book_de_acoes.aspx/salvarSimulacaoAutomatica",
            data: JSON.stringify({ form: jQuery("#aspnetForm").serialize() }),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (callback) {
                alert(callback);
            }
        });

C# コードビハインド:

[WebMethod(true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static bool salvarSimulacaoAutomatica(string form)
{
    try
    {
        System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
         var formData = js.Deserialize<object>(form);
    }
    catch(Exception e)
    {
    }
    return true;
}

しかし、離れた場所ではエラーが発生します:

System.ArgumentException: 無効な JSON プリミティブ: ctl00。System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() で System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 深度) で System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(文字列入力、Int32 深度制限、JavaScriptSerializer) serializer) で System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit) で System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input) で PortalSuvinil.admin_portal .book.book_de_acoes.salvarSimulacaoAutomatica(文字列形式)

このデータを取得する正しい方法は?

4

1 に答える 1

1

ここでの問題は、jQuery.serialize()JSON が作成されないことです。次のような標準形式の URL エンコード データを作成します。

'single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1'

これは単なる巨大な文字列であるため、意味のある JSON に変換されません。

トリックはjQuery.serializeArray()、JSON としてシリアル化できるオブジェクトを生成する代わりに使用することです。

[{name:'single',value:'Single'},{name:'multiple',value:'Multiple'}]

このリンクは、PageMethod でそのデータを処理する方法を示しています: http://www.asp.net/ajaxlibrary/jquery_webforms_post_data_to_pagemethod.ashx

于 2013-08-02T12:09:03.393 に答える