angularjs和webmethod返回json

时间:2016-04-05 10:33:13

标签: c# jquery angularjs json web-services

当我使用jquery $ ajax时,我将数据作为json获取 但是当使用angular http服务时,我得到的响应为xml。

这是我的两个代码(angular和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格式返回

 [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 个答案:

答案 0 :(得分:3)

您正在执行的请求不是真正的POST请求,我有类似的问题,如果您阅读控制台网络TAB,您将看到它是GET请求。

如果我想在服务中执行POST,我会怎么做:

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"
      }
    })...

我希望它有所帮助。