2016-04-05 3 views
2

Когда я использую jquery $ ajax, я получаю данные как json Но при использовании углового сервиса http я получаю ответ как xml.angularjs и webmethod return json

Это мой как код (угловой и 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

ответ

2

Запрос вы выполняете не является реальным 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" 
     } 
    })... 

Я надеюсь, что это помогает.

+0

добавить данные: { dataType: "json" } решить мою проблему – 24sharon