0

これらのjsonオブジェクトを背後のコードに渡そうとしています

var obj = {
        Name: '1',
        Starting: '3',

        Timeline: [
        {
            StartTime: '111',
            GoesFor: '111'

        }
        ,
        {
            StartTime: '112',
            GoesFor: '112'

        }

    ]
    };

もちろん、次のステップはオブジェクトを文字列化することです

var data = JSON.stringify(obj);

その後、jqueryajax呼び出しを使用して値をコードビハインドに渡します

$.ajax({
            url: 'default.aspx/test',
            type: 'POST',
            contentType: 'application/json',
            data: data,
            success: function(result) {
                $('#result').html(result.d);
            }
        });

重要なのは、jqueryライブラリからエラーが発生することです

POST http://localhost:63050/default.aspx/test 500 (Internal Server Error)

この問題は、obj変数を削除し、次のようにJSON.stringfyメソッドに入れると解決されます。

var data = JSON.stringify({
            obj: {
                Name: '1',
                Starting: '3',

                Timeline: [
                {
                    StartTime: '111',
                    GoesFor: '111'

                }
                ,
                {
                    StartTime: '112',
                    GoesFor: '112'

                }
                ]
            }
        });

関数内で宣言して初期化する代わりに、オブジェクト変数全体をjson.stringify関数に渡す方法はありますか?

皆さんが知りたいと思った場合、背後にある私のコードは次のようになります

public class MyModel
{
    public string Name { get; set; }
    public string Starting { get; set; }
    public testing2[] Timeline { get; set; }
}

public class testing2
{
    public string StartTime { get; set; }
    public string GoesFor { get; set; }
}

[WebMethod]
    public static string Test(MyModel obj)
    {
        return "Hello from test" + obj.Name + obj.Starting + obj.Timeline[0].StartTime + obj.Timeline[1].StartTime;
    }
4

1 に答える 1

1

いいえ、あなたの例ではオブジェクトを渡しているので、JSONデータをオブジェクトに入れてオブジェクトとして解析する必要があるためです。それ以外の場合、渡すのは変数の配列だけです。

基本的に、次のように問題を修正できます。

    $.ajax({
        url: 'default.aspx/test',
        type: 'POST',
        contentType: 'application/json',
        data: { obj: data },
        success: function(result) {
            $('#result').html(result.d);
        }
    });

そうすれば、元のstringifyを使用できます。

于 2012-10-04T03:01:51.493 に答える