我是一名经验丰富的 Flex 开发人员,正在学习 AngularJS。这太混乱了!!!
无论如何,我正在尝试通过 SOAP WSDL 请求对我的后端(在同一域上)服务器进行服务调用,并使用 AngularJS 模型对象填充数据。我正在尝试 Ajax,但在获取实际数据时遇到了一些问题。我认为我创建 SOAP 标记的方式有问题。我得到了成功的回复,但没有数据。
在无法弄清楚 Ajax 方法后,我偶然发现了 soapclient.js,发现它非常简单,代码比 Ajax 少。soapclient.js 为您完成了大部分工作,类似于 Ajax 方法,这使得代码更少。此外,使用soapclient.js,我可以进行SOAP 调用,还可以获取XML 格式响应的数据。
http://javascriptsoapclient.codeplex.com
我的问题是我正在尝试使用 AngularJS 将 XML 响应转储到 AnularJS 模型对象中。我不确定如何为我正在做的事情设置 AngularJS 项目,但我真的很想知道最好的方法,以保持我正在做的事情的解耦。我一直在疯狂地搜索谷歌,但大多数例子对于初学者来说似乎过于复杂。
这是我所拥有的:
<html>
<head>
<script language="JavaScript" type="text/javascript" src="jquery-1.10.1.js"></script>
<script language="JavaScript" type="text/javascript" src="soapclient.js"></script>
<script type="text/javascript">
function getData() {
var url2 = "https://myService";
var pl = new SOAPClientParameters();
pl.add("arg0", false);
SOAPClient.invoke(url2, "methodToCall", pl, true, getDataCallback);
}
function getDataCallback(r, soapResponse) {
alert(r.contents.payeeMailName);
}
</script>
</head>
<body>
<form>
<input type="button" value="Click Here to Call Web Service" onClick="getData()" style="width: 192px">
</form>
<div id="result">Result?</div>
</body>
</html>
现在,SOAP 服务返回如下数据:
<return>
<contents>
<eftAcctType>S</eftAcctType>
<id>
<djNumber>201-16-39063</djNumber>
<djSequence>1</djSequence>
</id>
<payeeAddrLine1>124 Agate Drive</payeeAddrLine1>
</contents>
<contents>
<eftAcctType/>
<id>
<djNumber>201-16-39201</djNumber>
<djSequence>1</djSequence>
</id>
<payeeAddrLine1>c/o Kevin Martinez, Attorney at Law</payeeAddrLine1>
</contents>
<contents>
<eftAcctType>C</eftAcctType>
<id>
<djNumber>201-16-38561</djNumber>
<djSequence>1</djSequence>
</id>
<payeeAddrLine1>1360 South Highway 191</payeeAddrLine1>
</contents>
<status>0</status>
</return>
AngularJS中进行服务调用的“正确”方式是什么,假设我这样做的方式没问题,如果不让我知道最好的方式,然后在结果中,我如何循环遍历XML响应中的数据并将其解析为 Angular 模型对象?我最终想在 DataGrid 中使用这些数据。
任何帮助都感激不尽。