2011-11-12 93 views
0

發現了一篇關於使用jQuery消費代碼隱藏WebMethod的優秀文章。我正在嘗試將它應用到我的網站上。但是我一直得到以下錯誤,但我確保參數名稱相同。jQuery,JSON和ASP.NET PageMethods

 $(".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:

[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; 
} 

完整的錯誤消息如下:

{ 「消息」: 「無效JSON原始:同上。」, 「堆棧跟蹤」:」在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 深度個)\ r \ n在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串 輸入,的Int32 depthLimit,JavaScriptSerializer串行個)\ r \ n在 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer,String input,Type type,Int32 depthLimit)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](String input)\ r \ n at System.Web.Script.Services .RestHandler.GetRawParamsFromPostRequest(HttpContext 上下文,JavaScriptSerializer序列化程序)\ r \ n在 System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext上下文)\ r \ n在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext的背景下 ,WebServiceMethodData methodData)」, 「ExceptionType」: 「System.ArgumentException」}

它總是打LikesError ...

回答

9

試試這個...

數據:JSON.stringify({ 「ID」:ID})

的職位是把您的 「ID」 對象到名稱/值對。例如ID = 12345。你必須首先將對象串聯起來。

+0

您拯救了我的一天!謝謝! – myoungjin

0

您可以使用鉻的開發工具來查看響應值