Я использую мыльную услугу для AngularJS от Andrew McGivery
Он отлично работает при вызове из Chrome, но он возвращает typeError в Firefox и IE11.
TypeError: e имеет значение null в строке angular.soap.js 16
Этот код выглядит следующим образом:
.factory("$soap",['$q',function($q){
return {
post: function(url, action, params){
var deferred = $q.defer();
//Create SOAPClientParameters
var soapParams = new SOAPClientParameters();
for(var param in params){
soapParams.add(param, params[param]);
}
var soapCallback = function(e){
//ERROR THROWN ON LINE BELOW
if(e.constructor.toString().indexOf("function Error()") != -1){
deferred.reject("An error has occurred.");
} else {
deferred.resolve(e);
}
}
SOAPClient.invoke(url, action, soapParams, true, soapCallback);
return deferred.promise;
},
setCredentials: function(username, password){
SOAPClient.username = username;
SOAPClient.password = password;
}
}
}]);
e в Chrome - это объект, возвращаемый моей веб-службой (пользовательский объект), в Firefox это null, и я не знаю, где искать библиотеку для отладки проблемы.
UPDATE:
Мой контроллер выглядит следующим образом:
.controller('SoapCtrl', function($soap) {
this.login = function(credentials) {
$soap.post('MYAPI', 'MYMETHOD', {login: credentials.login, password: credentials.password}).then(function(data) {
console.log(data.userid);
});
}
})
Я также попытался вызвать тот же web-сервис из плагина jquery jquery.soap внутри моего приложения angular, и я получаю ожидаемое поведение в как Chrome, так и Firefox.
ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ
Поскольку это профессиональный проект, мы решили перейти к плагину, который работает. jquery.soap
2 вопроса были опубликованы на странице автора без ответа на данный момент.
Я бы присвоил награду правильному ответу, но половина щедрота автоматически переходит к ответу с 2 upvotes...