我正在使用Andrew McGivery的 AngularJS肥皂服务
从Chrome调用它时效果很好,但它在Firefox和IE11上返回了一个typeError.
TypeError:在angular.soap.js第16行,e为null
有问题的代码如下:
.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; } } }]);
Chrome中的e是我的webservice(用户对象)返回的对象,在Firefox中它是null,我不知道在库中查找调试问题的位置.
更新:
我的控制器看起来像这样:
.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); }); } })
我也尝试从我的角度应用程序中的jquery插件jquery.soap调用相同的web服务,我在Chrome和Firefox中都获得了预期的行为.
最后更新
由于这是一个专业项目,我们决定转向一个有效的插件.jquery.soap
在作者的页面上发布了2个问题,目前没有答案.
我本可以将赏金奖励给一个有效的答案,但是一半的赏金会自动回到2个赞成票的答案......