jQuery, JSON en ASP.NET PageMethods

Vond een geweldig artikel over het gebruik van jQuery om een ​​codachter WebMethod te consumeren. Ik probeer het op mijn website toe te passen. Maar ik krijg steeds de volgende foutmelding, hoewel ik ervoor heb gezorgd dat de param-namen hetzelfde zijn.

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

De volledige foutmelding is als volgt:

{"Message": "Invalid JSON primitive: Id.", "StackTrace": "at   System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() \ r \ n   op   System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (Int32   diepte) \ r \ n op   System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (String   input, Int32 depthLimit, JavaScriptSerializer serializer) \ r \ n at   System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (JavaScriptSerializer   serializer, String-invoer, 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   context, JavaScript Seriële serializer) \ r \ n at   System.Web.Script.Services.RestHandler.GetRawParams (WebServiceMethodData   methodData, HttpContext-context) \ r \ n at   System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (HttpContext   context, WebServiceMethodData   methodData)", "ExceptionType": "System.ArgumentException"}

Het raakt altijd LikesError ...

0

2 antwoord

Probeer dit...

data: JSON.stringify ({"Id": Id})

De post verandert uw "Id" -object in naam/waarde-paren. bijv. Id = 12345. Je moet eerst het object streng maken.

9
toegevoegd
Jij redt mijn dag! dank je!
toegevoegd de auteur myoungjin, de bron

u kunt de ontwikkeltool van chrome gebruiken om de responswaarde te zien

0
toegevoegd