<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>JavaScript SOAP Client - DEMOS | GURU4.net</title>
<style type="text/css">
div.h { display: none; }
div.s { display: block; margin: 10px; }
</style>
<script type="text/javascript" src="soapclient.js"></script>
<script type="text/javascript">
var url = document.location.href.replace("demo.htm", "webservicedemo.asmx");
// DEMO 1
function HelloWorld()
{
var pl = new SOAPClientParameters();
SOAPClient.invoke(url, "HelloWorld", pl, true, HelloWorld_callBack);
}
function HelloWorld_callBack(r)
{
alert(r);
}
// DEMO 2
function HelloTo()
{
var pl = new SOAPClientParameters();
pl.add("name", document.frmDemo.txtName.value);
SOAPClient.invoke(url, "HelloTo", pl, true, HelloTo_callBack);
}
function HelloTo_callBack(r)
{
alert(r);
}
// DEMO 3
function ServerTime()
{
var pl = new SOAPClientParameters();
SOAPClient.invoke(url, "ServerTime", pl, true, ServerTime_callBack);
}
function ServerTime_callBack(st)
{
var ct = new Date();
alert("Server: " + st.toLocaleString() + "\r\n[Client: " + ct.toLocaleString() + "]");
}
// DEMO 4
function Wait()
{
var duration = parseInt(document.frmDemo.ddSleepDuration[document.frmDemo.ddSleepDuration.selectedIndex].value, 10);
var pl = new SOAPClientParameters();
pl.add("seconds", duration);
var ph = document.getElementById("phWait");
ph.style.display = "block";
SOAPClient.invoke(url, "Wait", pl, true, Wait_callBack);
}
function Wait_callBack(r)
{
var img = document.getElementById("phWait");
img.style.display = "none";
alert("Call to \"Wait\" method completed");
}
// DEMO 5
function ThrowException()
{
try
{
var pl = new SOAPClientParameters();
SOAPClient.invoke(url, "ThrowException", pl, false);
}
catch(e)
{
alert("An error has occured!");
}
}
// DEMO 6
function SyncSample()
{
var pl = new SOAPClientParameters();
pl.add("seconds", 5);
var starttime = (new Date).toLocaleTimeString();
var r = SOAPClient.invoke(url, "Wait", pl, false);
alert("Operation start time: " + starttime + "\r\nOperation end time: " + (new Date).toLocaleTimeString());
}
// DEMO 7
function GetUser()
{
var username = document.frmDemo.txtUsername.value;
var pl = new SOAPClientParameters();
pl.add("username", username);
SOAPClient.invoke(url, "GetUser", pl, true, GetUser_callBack);
}
function GetUser_callBack(u)
{
if(u == null)
alert("No user found.\r\n\r\nEnter a username and repeat search.");
else
alert(
"ID: " + u.Id + "\r\n" +
"USERNAME: " + u.Username + "\r\n" +
"PASSWORD: " + u.Password + "\r\n" +
"EXPIRATION: " + u.ExpirationDate.toLocaleString());
}
// DEMO 8
function GetUsers()
{
var pl = new SOAPClientParameters();
SOAPClient.invoke(url, "GetUsers", pl, true, GetUsers_callBack);
}
function GetUsers_callBack(ul)
{
alert(ul.length + " user(s) found:");
for(var i = 0; i < ul.length; i++)
alert(
"User No. " + (i + 1) + "\r\n\r\n" +
"ID: " + ul[i].Id + "\r\n" +
"USERNAME: " + ul[i].Username + "\r\n" +
"PASSWORD: " + ul[i].Password + "\r\n" +
"EXPIRATION: " + ul[i].ExpirationDate.toLocaleString());
}
// DEMO 9
function GetUserList()
{
var pl = new SOAPClientParameters();
SOAPClient.invoke(url, "GetUserList", pl, true, GetUserList_callBack);
}
function GetUserList_callBack(ul)
{
alert(ul.length + " user(s) found:");
for(var i = 0; i < ul.length; i++)
alert(
"User No. " + (i + 1) + "\r\n\r\n" +
"ID: " + ul[i].Id + "\r\n" +
"USERNAME: " + ul[i].Username + "\r\n" +
"PASSWORD: " + ul[i].Password + "\r\n" +
"EXPIRATION: " + ul[i].ExpirationDate.toLocaleString());
}
// DEMO 10
function GetCars()
{
var cid = document.frmDemo.ddCompany[document.frmDemo.ddCompany.selectedIndex].value;
if(cid != "")
{
// clear car list
while(document.frmDemo.ddCar.options.length > 0)
document.frmDemo.ddCar.remove(0);
// add waiting element
var o = document.createElement("OPTION");
document.frmDemo.ddCar.options.add(o);
o.value = "";
o.innerHTML = "Loading...";
// disable dropdown
document.frmDemo.ddCar.disabled = true;
// invoke
var pl = new SOAPClientParameters();
pl.add("companyid", cid);
SOAPClient.invoke(url, "GetCars", pl, true, GetCars_callBack);
}
}
function GetCars_callBack(cl)
{
// clear car list
var c = document.frmDemo.ddCar.options.length;
while(document.frmDemo.ddCar.options.length > 0)
document.frmDemo.ddCar.remove(0);
// add first (empty) element
var o = document.createElement("OPTION");
document.frmDemo.ddCar.options.add(o);
o.value = "";
o.innerHTML = "Please, select a model";
// fill car list
for(var i = 0; i < cl.length; i++)
{
var o = document.createElement("OPTION");
document.frmDemo.ddCar.options.add(o);
o.value = cl[i].Id.toString();
o.innerHTML = cl[i].Label;
}
// enable dropdown
document.frmDemo.ddCar.disabled = false;
}
// DEMO 11
function GetSoapResponse()
{
var pl = new SOAPClientParameters();
SOAPClient.invoke(url, "HelloWorld", pl, true, GetSoapResponse_callBack);
}
function GetSoapResponse_callBack(r, soapResponse)
{
alert(soapResponse.xml);
}
// utils
function toggle(id)
{
var d = document.getElementById(id);
if(d != null)
d.className = (d.className == "h") ? "s" : "h";
}
</script>
</head>
<body>
<form id="frmDemo" name="frmDemo" action="" method="post">
<div>
<a name="d1"></a>
<h2>DEMO 1: "Hello World!"</h2>
<p>The simplest example you can imagine (but maybe not the most fanciful...):</p>
<input type="button" value="Say "Hello world"" onclick="HelloWorld();" />
<p><b> » </b><a href="javascript:toggle('demo1');">Show / hide sample source code</a></p>
<div id="demo1" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function HelloWorld()<br />
{<br />
var pl = new SOAPClientParameters();<br />
SOAPClient.invoke(url, "HelloWorld", pl, true, HelloWorld_callBack);<br />
}<br />
function HelloWorld_callBack(r)<br />
{<br />
alert(r);<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public string HelloWorld()<br />
{<br />
return "Hello World!";<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d2"></a>
<h2>DEMO 2: using parameters</h2>
<p>Passing parameters to the Web Service:</p>
<label>Your name: </label><input type="text" name="txtName" id="txtName" value="Matteo" />
<input type="button" value="Say hello to me" onclick="HelloTo();" />
<p><b> » </b><a href="javascript:toggle('demo2');">Show / hide sample source code</a></p>
<div id="demo2" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function HelloTo()<br />
{<br />
var pl = new SOAPClientParameters();<br />
pl.add("name", document.frmDemo.txtName.value);<br />
SOAPClient.invoke(url, "HelloTo", pl, true, HelloTo_callBack);<br />
}<br />
function HelloTo_callBack(r)<br />
{<br />
alert(r);<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public string HelloTo(string name)<br />
{<br />
return "Hello " + name + "!";<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d3"></a>
<h2>DEMO 3: using .NET framework core classes</h2>
<p>Using a date as return type (.NET "DateTime" automatically converted to JavaScript "Date")</p>
<input type="button" value="Server date and time" onclick="ServerTime();" />
<p><b> » </b><a href="javascript:toggle('demo3');">Show / hide sample source code</a></p>
<div id="demo3" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function ServerTime()<br />
{<br />
var pl = new SOAPClientParameters();<br />
SOAPClient.invoke(url, "ServerTime", pl, true, ServerTime_callBack);<br />
}<br />
function ServerTime_callBack(st)<br />
{<br />
var ct = new Date();<br />
alert("Server: " + st.toLocaleString() + "\r\n[Client: " + ct.toLocaleString() + "]");<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public DateTime ServerTime()<br />
{<br />
return DateTime.Now;<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d4"></a>
<h2>DEMO 4: void methods</h2>
<p>Calling a void method with a long response-time (while waiting for the response an orange box is displayed):</p>
<select name="ddSleepDuration" id="ddSleepDuration">
<option value="0">Immediate (0 seconds)</option>
<option value="5">5-second delay</option>
<option value="10">10-second delay</option>
<option value="30">30-second delay</option>
</select>
<input type="button" value="Start" onclick="Wait();" />
<div id="phWait" style="display:none; margin: 10px 10px 10px 0px; padding: 10px; border: 3px solid #ffa300; width: 200px; text-align: center;">Please wait... <img src="loading.gif" width="123" height="6" /></div>
<p><b> » </b><a href="javascript:toggle('demo4');">Show / hide sample source code</a></p>
<div id="demo4" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function Wait()<br />
{<br />
var duration = parseInt(document.frmDemo.ddSleepDuration[document.frmDemo.ddSleepDuration.selectedIndex].value, 10);<br />
var pl = new SOAPClientParameters();<br />
pl.add("seconds", duration);<br />
var ph = document.getElementById("phWait");<br />
ph.style.display = "block";<br />
SOAPClient.invoke(url, "Wait", pl, true, Wait_callBack);<br />
}<br />
function Wait_callBack(r)<br />
{<br />
var img = document.getElementById("phWait");<br />
img.style.display = "none";<br />
alert("Call to \"Wait\" method completed");<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public void Wait(int seconds)<br />
{<br />
System.Threading.Thread.Sleep(seconds * 1000);<br />
return;<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d5"></a>
<h2>DEMO 5: Exceptions</h2>
<p>Handling exceptions:</p>
<input type="button" value="Throw exception" onclick="ThrowException();" />
<p><b> » </b><a href="javascript:toggle('demo5');">Show / hide sample source code</a></p>
<div id="demo5" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function ThrowException()<br />
{<br />
try<br />
{<br />
var pl = new SOAPClientParameters();<br />
SOAPClient.invoke(url, "ThrowException", pl, false);<br />
}<br />
catch(e)<br />
{<br />
alert("An error has occured!");<br />
}<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public void ThrowException(int seconds)<br />
{<br />
throw new Exception();<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d6"></a>
<h2>DEMO 6: sync calls</h2>
<p>Syncronous call example: server response is delayed 5 seconds using "Wait" method (see demo No. 4). Please note that browser is stuck until response is received:</p>
<input type="button" value="Start" onclick="SyncSample();" />
<p><b> » </b><a href="javascript:toggle('demo6');">Show / hide sample source code</a></p>
<div id="demo6" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function SyncSample()<br />
{<br />
var pl = new SOAPClientParameters();<br />
pl.add("seconds", 5);<br />
var starttime = (new Date).toLocaleTimeString();<br />
var r = SOAPClient.invoke(url, "Wait", pl, false);<br />
alert("Operation start time: " + starttime + "\r\nOperation end time: " + (new Date).toLocaleTimeString());<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public void Wait(int seconds)<br />
{<br />
System.Threading.Thread.Sleep(seconds * 1000);<br />
return;<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d7"></a>
<h2>DEMO 7: using custom entities (classes)</h2>
<p>Leaving the textbox empty, the web method will return a <kbd>null</kbd>; entering any value a <kbd>User</kbd> object with random property values will be returned:</p>
<label for="txtUsername">Username: </label><input type="text" name="txtUsername" id="txtUsername" value="" /><input type="button" value="Find user..." onclick="GetUser();" />
<p><b> » </b><a href="javascript:toggle('demo7');">Show / hide sample source code</a></p>
<div id="demo7" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function GetUser()<br />
{<br />
var username = document.frmDemo.txtUsername.value;<br />
var pl = new SOAPClientParameters();<br />
pl.add("username", username);<br />
SOAPClient.invoke(url, "GetUser", pl, true, GetUser_callBack);<br />
}<br />
function GetUser_callBack(u)<br />
{<br />
if(u == null)<br />
alert("No user found.\r\n\r\nEnter a username and repeat search.");<br />
else<br />
alert(<br />
"ID: " + u.Id + "\r\n" +<br />
"USERNAME: " + u.Username + "\r\n" +<br />
"PASSWORD: " + u.Password + "\r\n" +<br />
"EXPIRATION: " + u.ExpirationDate.toLocaleString());<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public User GetUser(string username)<br />
{<br />
if (username.Trim().Length == 0)<br />
return null;<br />
int id = DateTime.Now.Millisecond;<br />
string password = "PWD_" + DateTime.Now.Ticks.ToString();<br />
DateTime expirationdate = DateTime.Now.Add(new TimeSpan(1, 0, 0, 0));<br />
return new User(id, username, password, expirationdate);<br />
}
</kbd>
<p><b>User class:</b></p>
<kbd>
[Serializable]<br />
public class User<br />
{<br />
private int _id = -1;<br />
private string _username = "";<br />
private string _password = "";<br />
private DateTime _expirationdate = DateTime.MinValue;<br />
public User() { }<br />
public User(int id, string username, string password, DateTime expirationdate)<br />
{<br />
this.Id = id;<br />
this.Username = username;<br />
this.Password = password;<br />
this.ExpirationDate = expirationdate;<br />
}<br />
public int Id<br />
{<br />
get { return _id; }<br />
set { _id = value; }<br />
}<br />
public string Username<br />
{<br />
get { return _username; }<br />
set { _username = value; }<br />
}<br />
public string Password<br />
{<br />
get { return _password; }<br />
set { _password = value; }<br />
}<br />
public DateTime ExpirationDate<br />
{<br />
get { return _expirationdate; }<br />
set { _expirationdate = value; }<br />
}<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d8"></a>
<h2>DEMO 8: arrays</h2>
<p>Using custom entity arrays. The web method returns an array with 4 <kbd>User</kbd> objects (see demo No. 7)</p>
<input type="button" value="Get users" onclick="GetUsers();" />
<p><b> » </b><a href="javascript:toggle('demo8');">Show / hide sample source code</a></p>
<div id="demo8" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function GetUsers()<br />
{<br />
var pl = new SOAPClientParameters();<br />
SOAPClient.invoke(url, "GetUsers", pl, true, GetUsers_callBack);<br />
}<br />
function GetUsers_callBack(ul)<br />
{<br />
alert(ul.length + " user(s) found:");<br />
for(var i = 0; i < ul.length; i++) <br />
alert(<br />
"User No. " + (i + 1) + "\r\n\r\n" +<br />
"ID: " + ul[i].Id + "\r\n" +<br />
"USERNAME: " + ul[i].Username + "\r\n" +<br />
"PASSWORD: " + ul[i].Password + "\r\n" +<br />
"EXPIRATION: " + ul[i].ExpirationDate.toLocaleString());<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public User[] GetUsers()<br />
{<br />
User[] ul = new User[4];<br />
Random r = new Random();<br />
for (int i = 0; i < ul.Length; i++)<br />
{<br />
int id = r.Next(100);<br />
string username = "USR_" + id.ToString();<br />
string password = "PWD_" + id.ToString();<br />
DateTime expirationdate = DateTime.Now.Add(new TimeSpan((i + 1), 0, 0, 0));<br />
ul[i] = new User(id, username, password, expirationdate);<br />
}<br />
return ul;<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d9"></a>
<h2>DEMO 9: ICollection</h2>
<p>Custom entity collection (System.Collections.ICollection). The web method returns a <kbd>UserList</kbd> object, typed collection of <kbd>User</kbd> (see demo No. 7) with 3 elements.</p>
<input type="button" value="Get users" onclick="GetUserList();" />
<p><b> » </b><a href="javascript:toggle('demo9');">Show / hide sample source code</a></p>
<div id="demo9" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function GetUserList()<br />
{<br />
var pl = new SOAPClientParameters();<br />
SOAPClient.invoke(url, "GetUserList", pl, true, GetUserList_callBack);<br />
}<br />
function GetUserList_callBack(ul)<br />
{<br />
alert(ul.length + " user(s) found:");<br />
for(var i = 0; i < ul.length; i++) <br />
alert(<br />
"User No. " + (i + 1) + "\r\n\r\n" +<br />
"ID: " + ul[i].Id + "\r\n" +<br />
"USERNAME: " + ul[i].Username + "\r\n" +<br />
"PASSWORD: " + ul[i].Password + "\r\n" +<br />
"EXPIRATION: " + ul[i].ExpirationDate.toLocaleString());<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public UserList GetUserList()<br />
{<br />
UserList ul = new UserList();<br />
Random r = new Random();<br />
for (int i = 0; i < 3; i++)<br />
{<br />
int id = r.Next(100);<br />
string username = "USR_" + id.ToString();<br />
string password = "PWD_" + id.ToString();<br />
DateTime expirationdate = DateTime.Now.Add(new TimeSpan((i + 1), 0, 0, 0));<br />
ul.Add(new User(id, username, password, expirationdate));<br />
}<br />
return ul;<br />
}
</kbd>
<p><b>UserList class:</b></p>
<kbd>
[Serializable]<br />
public class UserList : System.Collections.CollectionBase<br />
{<br />
public UserList() { }<br />
public int Add(User value)<br />
{<br />
return base.List.Add(value as object);<br />
}<br />
public User this[int index]<br />
{<br />
get { return (base.List[index] as User); }<br />
}<br />
public void Remove(User value)<br />
{<br />
base.List.Remove(value as object);<br />
}<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d10"></a>
<h2>DEMO 10: practical usage</h2>
<p>Fill options with AJAX:</p>
<select name="ddCompany" id="ddCompany" onchange="GetCars();">
<option value="">Please, select a company...</option>
<option value="vw">Volkswagen</option>
<option value="f">FIAT</option>
<option value="bmw">BMW</option>
</select>
<select name="ddCar" id="ddCar" style="width:200px;"></select>
<p><b> » </b><a href="javascript:toggle('demo10');">Show / hide sample source code</a></p>
<div id="demo10" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function GetCars()<br />
{<br />
var cid = document.frmDemo.ddCompany[document.frmDemo.ddCompany.selectedIndex].value;<br />
if(cid != "")<br />
{<br />
// clear car list<br />
while(document.frmDemo.ddCar.options.length > 0)<br />
document.frmDemo.ddCar.remove(0);<br />
// add waiting element<br />
var o = document.createElement("OPTION");<br />
document.frmDemo.ddCar.options.add(o);<br />
o.value = "";<br />
o.innerHTML = "Loading...";<br />
// disable dropdown<br />
document.frmDemo.ddCar.disabled = true;<br />
// invoke<br />
var pl = new SOAPClientParameters();<br />
pl.add("companyid", cid);<br />
SOAPClient.invoke(url, "GetCars", pl, true, GetCars_callBack);<br />
}<br />
}<br />
function GetCars_callBack(cl)<br />
{<br />
// clear car list<br />
var c = document.frmDemo.ddCar.options.length;<br />
while(document.frmDemo.ddCar.options.length > 0)<br />
document.frmDemo.ddCar.remove(0);<br />
// add first (empty) element<br />
var o = document.createElement("OPTION");<br />
document.frmDemo.ddCar.options.add(o);<br />
o.value = "";<br />
o.innerHTML = "Please, select a model..."; <br />
// fill car list<br />
for(var i = 0; i < cl.length; i++)<br />
{<br />
var o = document.createElement("OPTION");<br />
document.frmDemo.ddCar.options.add(o);<br />
o.value = cl[i].Id.toString();<br />
o.innerHTML = cl[i].Label;<br />
}<br />
// enable dropdown<br />
document.frmDemo.ddCar.disabled = false;<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public Car[] GetCars(string companyid)<br />
{<br />
Car[] cl;<br />
switch (companyid.Trim().ToLower())<br />
{<br />
case "vw":<br />
cl = new Car[] <br />
{<br />
new Car(1, "Passat"),<br />
new Car(2, "Golf"),<br />
new Car(3, "Polo"),<br />
new Car(4, "Lupo")<br />
};<br />
break;<br />
case "f":<br />
cl = new Car[] <br />
{<br />
new Car(1, "Stilo"),<br />
new Car(2, "Punto"),<br />
new Car(3, "500")<br />
};<br />
break;<br />
case "bmw":<br />
cl = new Car[] <br />
{<br />
new Car(1, "X5"),<br />
new Car(2, "520")<br />
};<br />
break;<br />
default:<br />
cl = new Car[0];<br />
break;<br />
}<br />
return cl;<br />
}
</kbd>
<p><b>Car class:</b></p>
<kbd>
[Serializable]<br />
public class Car<br />
{<br />
private int _id = -1;<br />
private string _label = "";<br />
public Car() { }<br />
public Car(int id, string label)<br />
{<br />
this.Id = id;<br />
this.Label = label;<br />
}<br />
public int Id<br />
{<br />
get { return _id; }<br />
set { _id = value; }<br />
}<br />
public string Label<br />
{<br />
get { return _label; }<br />
set { _label = value; }<br />
}<br />
}
</kbd>
</fieldset>
</div>
<hr /><a name="d11"></a>
<h2>DEMO 11: Using the SOAP response (xml)</h2>
<p>
How to use the SOAP response (XmlDocument) in callback method.
In this example we show only the Xml in an alertbox, but you can - for example - transform the SOAP response using a stylesheet (XSL).
</p>
<input type="button" value="Show SOAP response" onclick="GetSoapResponse();" />
<p><b> » </b><a href="javascript:toggle('demo11');">Show / hide sample source code</a></p>
<div id="demo11" class="h">
<fieldset>
<legend>Client (javascript)</legend>
<kbd>
function GetSoapResponse()<br />
{<br />
var pl = new SOAPClientParameters();<br />
SOAPClient.invoke(url, "HelloWorld", pl, true, GetSoapResponse_callBack);<br />
}<br />
function GetSoapResponse_callBack(r, soapResponse)<br />
{<br />
alert(soapResponse.xml);<br />
}
</kbd>
</fieldset>
<fieldset>
<legend>Server (WebMethod - C#)</legend>
<kbd>
public string HelloWorld()<br />
{<br />
return "Hello World!";<br />
}
</kbd>
</fieldset>
</div>
</div>
</form>
</body>
</html>