jQuery、JSON 和 ASP.NET 页面方法

Posted

技术标签:

【中文标题】jQuery、JSON 和 ASP.NET 页面方法【英文标题】:jQuery, JSON and ASP.NET PageMethods 【发布时间】:2011-12-27 11:00:24 【问题描述】:

找到一篇关于使用 jQuery 使用代码隐藏 WebMethod 的精彩文章。我正在尝试在我的网站上应用它。但是,尽管我确保参数名称相同,但我不断收到以下错误。

        $(".StreamLike").live("mouseover", function () 
            var Id = $(this).parent().parent().find(".StreamIndex").html();
            alert(Id);
            $.ajax(
                type: 'POST',
                url: 'Default.aspx/GetLikes',
                data:  "Id": Id ,
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: LikesSuccess,
                error: LikesError
            );
        ); 

        function LikesSuccess(result, userContext, methodName) 
            for (var i in result) 
                alert(result[i]); 
            

网络方法:

[WebMethod]
public static string[] GetLikes(int Id)

    List<Like> Likes = Like.GetById(Id, false);
    string[] Senders = new string[Likes.Count];
    for (int i = 0; i < Likes.Count; i++)
    
        Senders[i] = Likes[i].Sender;            
    
    return Senders;

完整的错误信息如下:

"Message":"无效的 JSON 原语:Id。","StackTrace":" at System.Web.Script.Serialization.javascriptObjectDeserializer.DeserializePrimitiveObject()\r\n 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 深度)\r\n 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串 输入,Int32 depthLimit,JavaScriptSerializer 序列化程序)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序、字符串输入、类型类型、Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](字符串 输入)\r\n 在 System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext 上下文,JavaScriptSerializer 序列化程序)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData 方法数据,HttpContext 上下文)\r\n 在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext 上下文,WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"

总是遇到 LikesError...

【问题讨论】:

【参考方案1】:

试试这个...

数据:JSON.stringify( "Id": Id )

该帖子正在将您的“Id”对象转换为名称/值对。例如编号 = 12345。您必须先对对象进行字符串化。

【讨论】:

【参考方案2】:

可以使用chrome的开发工具查看响应值

【讨论】:

以上是关于jQuery、JSON 和 ASP.NET 页面方法的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net jQuery调用webservice返回json数据的一些问题

使用 jquery ajax 从 asp.net 网页表单页面调用 web api url

如何在 asp.net 中使用 JSON 和 JQuery 从 WebMethod 返回 DataTable?

使用 ASP.Net 和 JSON 格式实现 jQuery 的 jgGrid

剑道树视图的 JQuery 和 ASP.NET MVC json 输出

asp.net jquery datatables.net webmethod [重复]