[C#]angularjs 和 webmethod 返回 json

发布时间: 2017/2/23 20:05:57
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

当我使用 jquery $ajax 时,我得到的数据以 json 格式但使用角 http 服务时,我能作为 xml 响应。

这是我这两个代码 (角和 jquery ajax)

var _getList = function () {
    var list = [];
    var deferred = $q.defer();
    $.ajax({
        type: "POST",
        url: '/Landing/manage/WebService.asmx/GetList',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            if (data && data.d) {
                list = data.d;
                deferred.resolve(list);
            }
        },
        error: function (xmlHttpRequest, textStatus, errorThrown) {
            deferred.reject(xmlHttpRequest);
        }
    });      

   //angular
    $http({
        method: 'POST',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        url: '/Landing/manage/WebService.asmx/GetList',          
        headers: {
            "Content-Type": "application/json"
        }
    }).success(function (data) {
        console.log(data);
          deferred.resolve(data);
      })
     .error(function (data, status, headers, config) {
         deferred.reject(data);
     });

    return deferred.promise;
};

这是我与返回的 json 格式的 web 方法代码

 [WebMethod]
    [System.Web.Script.Services.ScriptMethod(ResponseFormat = 

    System.Web.Script.Services.ResponseFormat.Json)]
        public tblCampaignCollection GetList()
        {
            tblCampaignCollection coll =  Campaign.AdminGetAll();

            return coll;
    }

enter image description here

解决方法 1:

您正在执行的请求不是一个真正的 POST 请求,我有一个类似的问题,如果你读过控制台网络选项卡上你会看到它是一个 GET 请求。

如果我想要在服务中执行一个职位做什么是以下内容︰

function myService(xxxParam) {

      var request = $http({
        method: 'POST',
        headers: {"Content-Type": 'text/plain; charset=UTF-8'},
        url: serviceURL,
        data: {
          firstPostParam: "string",
          secondPostParam: 1,
          thirdPostParam: xxxParam
        }
      });
      return ( request.then(handleSuccess, handleError) );
    }

试着用

$http({
      method: 'POST',
      url: '/Landing/manage/WebService.asmx/GetList',
      headers: {
        "Content-Type": 'application/json; charset=UTF-8'
      },
      data: {
        dataType:  "json"
      }
    })...

我希望它能帮助。

赞助商