解决这个问题可以从两前端、后台两方面考虑

一. 前端jquery调用时 设置下返回类型就可以

                 $.ajax({
                    data: cc,
                    url: "http://localhost:3330/asmx/test.asmx/GetPerson",
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json;charset=utf-8",
                    beforeSend: function (t) {
                     t.setRequestHeader("Content-type", "application/json; charset=utf-8");
                    },
                    success: function success(data) {
                        var youdata= JSON.parse(data.d);
                    },
                    error: function (t, a) {

                    }
                });

虽说返回类型是json,但是也就仅仅是格式化了最外边的D,里面的数据还需要继续进行格式化,至于为什么要用data.d来获取结果可以查下webservices的用法 默认是以d来标记结果的。

当然还可以使用下面方法来获取 (如果data是个字符串,使用  eval("("+data+")")  可以将data转化为json对象,和JSON.parse的功能一样)

                $.ajax({
                    data: cc,
                    url: "http://localhost:3330/asmx/test.asmx/GetPerson",
                    type: "POST",
                    dataType: "text",
                    contentType: "application/json;charset=utf-8",
                    beforeSend: function (t) {
                    t.setRequestHeader("Content-type", "application/json; charset=utf-8");
                    },
                    success: function success(data) {
                        var data = eval("(" + data + ")");
                        var youdata= JSON.parse(data.d);
                    },
                    error: function (t, a) {

                    }
                });

二.从后端来说在方法前加个简单的标记就可以

  [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐