【问题标题】:Parse JSON on javascript after return JsonConvert.SerializeObject(json) [.NET handler]返回 JsonConvert.SerializeObject(json) [.NET handler] 后在 javascript 上解析 JSON
【发布时间】:2011-07-17 15:41:51
【问题描述】:

我正在.net 平台上开发一个网络应用程序。

我编写了一个处理程序代码,它将 JSON 对象返回给 Javascript(在我在 AJAX 中请求之后)。

处理程序代码:

var wrapper = new { 
    left = left.ToString(), 
    top = top.ToString(), 
    width = width.ToString(), 
    height = height.ToString() };
context.Response.Write(JsonConvert.SerializeObject(wrapper));

在 Javascript 中,当我发出警报时,我看到我得到了一个对象。这很好。
但现在我想将其解析为 JSON。

当我做JSON.parse(msg); 时,我得到一个错误

“JSON.parse:意外字符”

当我使用 jquery-1.6.2 执行 jQuery.parseJSON(msg); 时,出现此错误

jQuery.parseJSON 不是函数(我使用的是 jquery-1.6.2)

有什么问题?

【问题讨论】:

    标签: javascript asp.net json parsing javascriptserializer


    【解决方案1】:

    试试这个。

    像这样创建一个名为 TestPage.aspx 的页面。

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Test Page</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $.ajax({
                    url: 'TestPage.aspx/GetDimensions',
                    type: 'POST',
                    contentType: 'application/json',
                    data: '{}',
                    success: function (response) {
                        // Don't forget that the response is wrapped in a
                        //  ".d" object in ASP.NET 3.5 and later.
                        var data = response.d;
                        $('#test-div').animate({
                            left: data.left + 'px',
                            top: data.top + 'px',
                            height: data.height + 'px',
                            width: data.width + 'px'
                        }, 5000, function () {
                            // Animation complete.
                        });
                    }
                });
            });
        </script>
        <style type="text/css">
            #test-div
            {
                background-color:#eee;
                border: 1px solid #ccc;
                border-radius: 5px;
                height: 100px;
                left:0px;
                padding-top: 40px;
                text-align:center;
                top:0px;
                width: 100px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
    
        <div id="test-div">
        This is a test div
        </div>
    
        </form>
    </body>
    </html>
    

    在 TestPage.aspx.cs 上,这样做

    using System.Web.Services;
    
    public partial class Test1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e){/*page load eent*/}
    
        static int left = 50;
        static int top = 50;
        static int height = 200;
        static int width = 200;
    
        [WebMethod]
        public static object GetDimensions()
        {
            return new
            {
                left = left.ToString(),
                top = top.ToString(),
                width = width.ToString(),
                height = height.ToString()
            };
        }
    }
    

    希望这会有所帮助。

    礼貌:ASP.NET web services mistake: manual JSON serialization by Dave Ward

    【讨论】:

    • JavaScriptSerializer 在 ASP.NET 3.5 上也可用。
    • @Mehdi Golchin:不确定,懒得去查看 MSDN。谢谢你。更新:)
    • 非常感谢!我试着让你知道:)
    • 嘿,我照你说的做了。现在我收到以下错误:对象不支持属性或方法'parseJSON'
    • 有时间我会敲一个小例子
    猜你喜欢
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多