Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery向ASP.NET WebMethod发送json数据时出现问题_Jquery_Asp.net_Ajax_Json - Fatal编程技术网

jquery向ASP.NET WebMethod发送json数据时出现问题

jquery向ASP.NET WebMethod发送json数据时出现问题,jquery,asp.net,ajax,json,Jquery,Asp.net,Ajax,Json,我已经阅读了关于这个问题的所有问题,但没有设法解决它 分数等级: public class Score { // default constructor public Score() { } public int TraitID { get; set; } public double TraitScore { get; set; } } ASPX WebMethod: [WebMethod] public static bool Te

我已经阅读了关于这个问题的所有问题,但没有设法解决它

分数等级:

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;
    }
我不断得到错误:

{"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"}

谢谢

我将自定义对象数组传递到web方法中的列表中,效果很好

我猜,由于属性名周围的引号,您遇到了一个小的JSON格式问题。尝试将对象更改为:

var scoresList = [{TraitID:1, TraitScore:2}, {TraitID:2, TraitScore:5}];
data: JSON.stringify({ scores : scoresList }),      
并将数据行更改为:

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>

$(函数(){
var scoresList=[{TraitID:1,TraitScore:2},{TraitID:2,TraitScore:5}];
$.ajax({type:“POST”,
url:“Tryouts.aspx/Test”,
数据:JSON.stringify({scores:scoresList}),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
if(response.d==true){
警惕(“成功!!!”);
}否则{
警惕(“问题!!!!!!!”);
}
},
错误:函数(xhr){
警报(“错误”);
}
});
});
下面是代码隐藏:

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;
}
公开课分数
{//默认构造函数
公共分数(){}
public int TraitID{get;set;}
公共双TraitScore{get;set;}
}
[网络方法]
公共静态布尔测试(列出分数)
{
返回true;
}

另一个问题:如何动态构建计分表?这是我的代码:$(“.traits”).each(函数(){var selectedRadio=$(this.children('input[type=radio]:checked');var score=selectedRadio.val();if(score!=未定义){allScores+='{TraitID:'+selectedRadio.attr(“name”)。替换('trait','')+',Score:'+Score+'},;}});var scoresList='['+allScores.slice(0,-2)+']“;如何在$.ajax中查看数据?这确实应该是一个单独的问题,但这里是这样的:不需要字符串
allScores
字符串。将
scores
对象添加到'scoresList'变量中,如下所示:`$(“.traits”)。每个(函数(){.var selectedRadio=$(This)。子对象('input[type=radio]:checked');如果(score!=未定义){scoresList.push({TraitID:selectedRadio.attr(“name”).replace('trait',''),score:selectedRadio.val();}});`var scoresList=[];$(.traits”).each(函数(){var selectedRadio=$(this).子函数('input[type=radio]:checked');var score=selectedRadio.val();if(score!=未定义){scoresList.push({TraitID:selectedRadio.attr(“name”).replace('trait',''),Score:Score});}}})$.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!!!”);}否则{alert}(“问题!!!!!!!”;}},错误:函数(){alert(“error”);}});天哪,我(和其他多少人)花了4个小时在谷歌上搜索复杂的解决方案。你把它钉牢了,最小限度地和紧密地绑定在一起。太棒了。