2015-08-21 2 views
1

У меня есть существующая служба WCF (не RESTful), которую я вызываю, используя $ .ajax. Мне нужно иметь возможность использовать службу $ http. Я пробовал несколько вещей, но ничего не работает. Следующий фрагмент возвращает xml успешно, и я в порядке, поскольку я не могу изменить службу для возврата json.convert ajax call to angularjs http post

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

Я хотел бы оставить этот вопрос, поскольку нашел совершенно другой способ сделать это. – Arun

ответ

1

Ваш вопрос гласит: «конвертировать ajax-вызов в HTTP-сообщение angularjs».

Для начала вам необходимо создать сервис/фабрику для всех ваших операций 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(); 

Ofcourse с обратными вызовами успеха/ошибки, если это необходимо.

+0

Yasser это общий формат использования сервиса $ http. Мне нужно знать, как мне нужно преобразовать данные мыла, которые я передаю JSON. Кроме того, я добавил заголовок SOAPAction, мне нравится знать, требуется ли это. – Arun