如何解决将JSON数据发送到ASP.NET WebMethod的jquery问题
| 我已经阅读了有关此问题的所有问题,但未能解决... 分数类: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;
}
jQuery代码:
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\");
}
});
我不断收到错误:
{\"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,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\"}
谢谢 !!!
解决方法
我正在通过Web方法将自定义对象的数组传递到List中,并且效果很好。
我猜是由于属性名称周围的引号,您遇到了一个小的JSON格式问题。尝试将您的对象更改为此:
var scoresList = [{TraitID:1,TraitScore:2},{TraitID:2,TraitScore:5}];
并将您的数据行更改为:
data: JSON.stringify({ scores : scoresList }),
希望有帮助...
更新:工作示例...
<script type=\"text/javascript\">
$(function () {
var scoresList = [{ TraitID: 1,TraitScore: 2 },{ TraitID: 2,TraitScore: 5}];
$.ajax({ type: \"POST\",url: \"Tryouts.aspx/Test\",data: JSON.stringify({ scores: scoresList }),contentType: \"application/json; charset=utf-8\",dataType: \"json\",success: function (response) {
if (response.d == true) {
alert(\"success!!!!!\");
} else {
alert(\"problem!!!!!!!!!\");
}
},error: function (xhr) {
alert(\"ERROR\");
}
});
});
</script>
这是背后的代码:
public class Score
{ // default constructor
public Score() { }
public int TraitID { get; set; }
public double TraitScore { get; set; }
}
[WebMethod]
public static bool Test( List<Score> scores )
{
return true;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。