AngularJS - Integracja usług SOAP z modelem AngularJS
Jestem doświadczonym programistą Flex, który uczy się AngularJS. To jest tak mylące !!!
W każdym razie próbuję wykonać wywołanie usługi do mojego serwera zaplecza (na tej samej domenie) za pośrednictwem żądania WSDL SOAP i zapełnić dane obiektem modelu AngularJS. Próbowałem Ajax, ale miałem pewne problemy z odzyskaniem rzeczywistych danych. Myślę, że coś jest nie tak ze sposobem, w jaki stworzyłem tag SOAP. Odbierałem udaną odpowiedź, ale brak danych.
Po tym, jak nie udało mi się znaleźć metody Ajax, natknąłem się na soapclient.js i stwierdziłem, że jest to niezwykle proste, z mniejszym kodem niż Ajax. soapclient.js wykonuje większość pracy za ciebie, podobnie jak metoda Ajax, która tworzy znacznie mniej kodu. Dodatkowo, za pomocą soapclient.js jestem w stanie wykonać wywołanie SOAP, a także odzyskać dane w formacie XML.
http://javascriptsoapclient.codeplex.com
Moim problemem jest to, że próbuję użyć AngularJS do zrzucenia odpowiedzi XML do obiektu modelu AnularJS. Nie jestem pewien, jak skonfigurować projekt AngularJS dla tego, co robię, ale naprawdę chciałbym wiedzieć, jaka jest najlepsza metoda, aby utrzymać to, nad czym pracuję, oddzielone. Szukałem w Google jak szalony, ale większość przykładów wydaje się zbyt skomplikowana dla początkującego.
Oto co mam:
<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>
Teraz usługa SOAP zwraca takie dane:
<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>
Jaki jest „właściwy” sposób w AngularJS na wykonanie wywołania usługi, zakładając, że tak, jak to zrobiłem, jest w porządku, jeśli nie daj mi znać najlepszego sposobu, a następnie w wyniku, jak mam przechodzić przez dane w odpowiedzi XML i przeanalizować go w obiekt modelu Angular? W końcu chcę użyć tych danych w DataGrid.
Każda pomoc zostanie bardzo doceniona.