簡體   English   中英

使用Ajax傳遞json對象的語法

[英]syntax of passing json object using Ajax

我試圖將這些json對象傳遞給后面的代碼

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

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

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

        }

    ]
    };

當然,下一步是對對象進行字符串化

var data = JSON.stringify(obj);

之后,我使用一個jQuery ajax調用將值傳遞給后面的代碼

$.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;
    }

不,因為在您的示例中,您正在傳入一個對象,所以您需要將JSON數據放入對象中,以便將其解析為對象。 否則,您傳遞的只是一個變量數組。

基本上,您可以像這樣糾正問題:

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

這樣,您可以使用原始的stringify。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM