jquery problem mit senden von json-Daten ASP.NET WebMethod
Ich gelesen habe, alle Fragen zu diesem Thema aber nicht geschafft, es zu lösen...
Den Score-Klasse:
public class Score
{
//default constructor
public Score()
{ }
public int TraitID { get; set; }
public double TraitScore { get; set; }
}
ASPX WebMethod:
[WebMethod]
public static bool Test(List<Score> scores)
{
return true;
}
Den jQuery-code:
var scoresList = [{"TraitID":1,"TraitScore":2}, {"TraitID":2,"TraitScore":5}];
$.ajax({
type: "POST",
url: "Tryouts.aspx/Test",
data: "{'scores':" + JSON.stringify(scoresList) + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
if (response.d == true) {
alert("success!!!!!");
}
else {
alert("problem!!!!!!!!!");
}
},
error: function () {
alert("ERROR");
}
});
Ich erhalte die Fehlermeldung:
{"Message":"Cannot convert object of type \u0027System.String\u0027 to type
\u0027System.Collections.Generic.List`1[BusinessLogicLayer.Score]\u0027","StackTrace":" at
System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type,
JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at
System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type,
JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at
System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n
at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target,
IDictionary`2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext
context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at
System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,
WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
Dank !!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir übergeben von arrays von benutzerdefinierten Objekte in der Liste im web-Methoden und es funktioniert Prima.
Ich bin, vermute, dass du einen kleinen JSON-Formatierung Problem wegen der Anführungszeichen um den Namen der Eigenschaft. Versuchen Sie Ihr Objekt auf dieser :
und Ihre Daten ändern Linie zu diesem :
Hoffe, das hilft...
UPDATE: funktioniert beispielsweise...
Hier ist die codebehind :
allScores
string ist nicht nötig. fügen Sie Ihrescore
Objekte Ihrer 'scoresList' var wie folgt aus:" $(".Merkmale").each(function () { var selectedRadio = $(this).Kinder('input[type=radio]:checked'); if (Ergebnis != undefined) { scoresList.push( { TraitID: selectedRadio.attr("name").replace('Charakterzug', "), Score: selectedRadio.val() }); } });`