我有一个现有的WCF(非RESTful)服务,我正在使用$ .ajax调用。我需要能够使用$ http服务。我尝试了一些东西,但似乎没有任何效果。下面的代码片段成功返回xml,我很好,因为我无法更改服务以返回json。
var Type = "POST";
var Url = "http://localhost:83928/BookReviewService.svc";
var Data = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetBookReviews xmlns="http://tempuri.org/"><bookReviewsRequest xmlns:a="http://schemas.datacontract.org/2004/07/BookModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:AmazonCustomerReviewUrl i:nil="true"/><a:AmazonSiteLinkUrl i:nil="true"/><a:Isbn>0393324826</a:Isbn></bookReviewsRequest></GetBookReviews></s:Body></s:Envelope>';
var ContentType = "text/xml; charset=utf-8";
var DataType = "xml";
var ProcessData = true;
CallService();
function CallService() {
$.ajax({
type: Type, //GET or POST or PUT or DELETE verb
url: Url, // Location of the service
data: Data, //Data sent to server
contentType: ContentType, // content type sent to server
dataType: DataType, //Expected data format from server
processdata: ProcessData, //True or False
beforeSend: function (xhr) {
xhr.setRequestHeader("SOAPAction", "http://tempuri.org/IBookReviewService/GetBookReviews");
},
success: function (msg) {//On Successfull service call
ServiceSucceeded(msg);
},
error: ServiceFailed// When Service call fails
});
}
function ServiceFailed(result) {
console.log(result);
console.log('Service call failed: ' + result.status + ' ' + result.statusText);
}
function ServiceSucceeded(result) {
console.log(result);
}
答案 0 :(得分:1)
你的问题是&#34;将ajax调用转换为angularjs http post&#34;。
首先,您应该为所有ajax操作创建一个服务/工厂,但这只是个人偏好,没有这个也可以工作,如果你不想要,请阅读this使用服务/工厂直接做。
angular.module("moduleName").factory('factoryName', ['$http', function ($http) {
return {
myFunction: function(data) {
return $http({
url: '/user/update',
method: 'POST',
data: data
});
}
};
}]);
并在您的控制器中注入此服务并使用此功能,如
factoryName.myFunction();
当然需要成功/错误回调。