gpt4 book ai didi

Angularjs SOAP 库在 Firefox 上抛出一个类型错误,而不是在 Chrome 中

转载 作者:行者123 更新时间:2023-12-03 20:57:22 25 4
gpt4 key购买 nike

我正在使用来自 Andrew McGivery 的 AngularJS 的 SOAP 服务

从 Chrome 调用时它可以完美运行,但它在 Firefox 和 IE11 上返回 typeError。

TypeError: e is null at angular.soap.js line 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;
}
}
}]);

Chrome 中的 e 是我的 webservice 返回的对象(用户对象),在 Firefox 中它为 null,我不知道在库中的何处查找以调试问题。

更新:

我的 Controller 看起来像这样:
.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 中调用相同的网络服务在我的 angular 应用程序中,我在 Chrome 和 Firefox 中都得到了预期的行为。

最后更新

由于这是一个专业项目,我们决定继续使用一个有效的插件。 jquery.soap

author's page 上发布了 2 个问题暂时没有答案。

我本可以将赏金授予有效答案,但一半的赏金将自动分配给有 2 个赞成票的答案...

最佳答案

在库上,检查文件soapclient.js,在第195行

SOAPClient._onSendSoapRequest = function(method, async, callback, wsdl, req) 
{
var o = null;
var nd = SOAPClient._getElementsByTagName(req.responseXML, method + "Result");
if(nd.length == 0)
nd = SOAPClient._getElementsByTagName(req.responseXML, "return"); // PHP web Service?
if(nd.length == 0)
{
if(req.responseXML.getElementsByTagName("faultcode").length > 0)
{
if(async || callback)
o = new Error(500, req.responseXML.getElementsByTagName("faultstring")[0].childNodes[0].nodeValue);
else
throw new Error(500, req.responseXML.getElementsByTagName("faultstring")[0].childNodes[0].nodeValue);
}
}
else
o = SOAPClient._soapresult2object(nd[0], wsdl);
if(callback)
callback(o, req.responseXML);
if(!async)
return o;
}

如果你说在 Firefox 中 e值(value)是 null这是因为在这个方法中 o变量从未设置。调试这个方法会有帮助。

关于Angularjs SOAP 库在 Firefox 上抛出一个类型错误,而不是在 Chrome 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34155099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com