- 浏览: 272438 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
tonytony3:
THANK YOU
Android多级树形菜单的实现 -
haiyang08101:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
求求你帮帮我:
怎么把我的空格也当成节点处理了?
java对xml文件做增删改查 -
求求你帮帮我:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
lpj13579:
多谢分享,学习学习
高仿小米盒子UI效果实现
再javascript中使用soap调用webservice的示例代码
代码再IE6和FF测试通过,对于c#写的webservice和java(xfire)写的,都测试过,没有问题
此代码原型来源于 http://www.guru4.net/ 的javascript soapclient
发现这个下载的js只能用于调用c#的webservice,所以利用mootools,重新封装,达到IE和火狐的兼容的同时,兼容java和c#
(再例子中使用的 mootools.v1.11.js 文件,做过修改)
客户端js调用代码如下
js 代码
----------------------------------------------------------------------
function ajaxRequest()
{
var url = "http://localhost:88/webservicedemo.asmx";
//设置webService传入参数
//
//注意:
//
// 调用.Net 写的webservice(如例子中的webservicedemo.asmx)
// HelloTo(String name) 针对name参数必须写成 <name></name>wqj,还有更多参数一样写,使用名称匹配
// 传入的参数数量可以不等于(多于或少于)方法要求的参数
//
// 调用java(xfire) 发布的webService
// 传入的参数必须与调用方法的参数数量相等,且按传入值的顺序进行匹配
//
var para = "<name></name>wqj"; 这里应该是一个标准的xml形式,源码贴出来时被虑掉了,请参看附件源码
var op = {
data:para,
onComplete: showResponse,
onFailure:showError,
update:'ajaxBack'
};
var service = new WebService(url,"HelloTo",op);
service.request();
return false;
}
function showError(obj)
{
//obj 是一个xmlHttpRequest对象
alert("error");
}
function showResponse(requestText,requestXML)
{
//requestText 返回的文本
//requestXML 返回的XML
alert("ok");
}
WebService类的代码如下(webservice.js)
js 代码
var WSDLS = {};
var WebService = new Class({
url : '',
method : '',
options:
{
method:'GET',
data: null,
update: null,
onComplete: Class.empty,
onError:Class.empty,
evalScripts: false,
evalResponse: false
},
initialize: function(url,method,options)
{
this.url = url;
this.method = method;
this.options = options;
},
request : function()
{
var wsdl = WSDLS[this.url];
if(!wsdl)
{
var op = {method:'GET',async: false};
var wsdlAjax = new XHR(op).send(this.url + "?wsdl", null);
wsdl = wsdlAjax.transport.responseXML;
WSDLS[this.url] = wsdl;
}
this.setSoap(wsdl);
},
setSoap : function(wsdl)
{
var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
var sr =
"" +
""
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:body>"</soap:body> +
"<" + this.method + " xmlns=\"" + ns + "\">" +
(this.options.data === null ?"":this.options.data) +
" + this.method + ">;
this.options.method = 'post';
this.options.data = null;
var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this.method;
var soapAjax = new Ajax(this.url,this.options);
soapAjax.setHeader("SOAPAction", soapaction);
soapAjax.setHeader("Content-type", "text/xml; charset=utf-8");
soapAjax.request(sr);
}
});
在第一个版本中存在以下问题
1. 不能根据webservice的要求输入参数自动组织参数
2. 没有处理返回值
3.一旦webservice调用过程出错,会形成一个死循环(一直弹出error)
V2 说明
1. 解决第一版中死循环的问题
2. 统一输入参数的传入形式(与mootools的ajax使用方式完全一致),形式如name=wqj&age=20&........
3. 自动根据参数名对应的值,组织webservice的传入参数,只根据webservice要求的参数名查找对应的值
与顺序不再有关系.(对于xfire中的输入参数使用名称 in0,in1........)
传入的参数数量也不再要求一致,多的自动丢弃,少的自动传空
4. 对于返回的XML,增加提取方法,返回需要的关键返回值(去掉XML的框框)
详细参照附件源码,下面是部分关键代码
WebService类的代码如下(webservice.js)
js 代码
var WSDLS = {};
var WebService = new Class({
url : '',
method : '',
options:
{
method:'GET',
data: null,
update: null,
onComplete: Class.empty,
onError:Class.empty,
evalScripts: false,
evalResponse: false
},
initialize: function(url,method,options)
{
this.url = url;
this.method = method;
this.options = options;
},
request : function()
{
var wsdl = WSDLS[this.url];
if(!wsdl)
{
var op = {method:'GET',async: false};
var wsdlAjax = new XHR(op).send(this.url + "?wsdl", null);
wsdl = wsdlAjax.transport.responseXML;
WSDLS[this.url] = wsdl;
}
this.setSoap(wsdl);
},
setSoap : function(wsdl)
{
var paraXML = this.getParaXML(wsdl);
alert(paraXML);
var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
var sr =
"" +
" +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:body>"</soap:body> +
"<" + this.method + " xmlns=\"" + ns + "\">" +
paraXML +
" + this.method + ">";
this.options.method = 'post';
this.options.data = null;
var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this.method;
var soapAjax = new Ajax(this.url,this.options);
soapAjax.setHeader("SOAPAction", soapaction);
soapAjax.setHeader("Content-type", "text/xml; charset=utf-8");
soapAjax.request(sr);
},
getParaXML : function(wsdl)
{
var objNode = null;
var rtnValue = "";
//java(xfire)
var ell = this.getElementsByTagName(wsdl,"xsd:element");
if(ell.length == 0)
{
//c#
ell = this.getElementsByTagName(wsdl,"s:element");
}
for(var i = 0; i < ell.length; i++)
{
if(this.getElementAttrValue(ell[i],"name") == this.method)
{
objNode = ell[i];
break;
}
}
if(objNode == null) return rtnValue;
//java(xfire)
ell = this.getElementsByTagName(objNode,"xsd:element");
if(ell.length == 0)
{
//c#
ell = this.getElementsByTagName(objNode,"s:element");
}
if(ell.length == 0) return rtnValue ;
var hash = new Hash();
if(this.options.data != null && this.options.data.clean != "")
{
hash = this.options.data.split("&").toHash("=");
}
for(var i = 0; i < ell.length; i++)
{
var paraName = this.getElementAttrValue(ell[i],"name");
rtnValue = rtnValue + this.getSingleXML(paraName,hash);
}
return rtnValue;
},
getSingleXML : function (name,hash)
{
name = name.trim();
var rtnValue = "";
if(hash.hasKey(name))
{
rtnValue = hash.get(name);
}
rtnValue = "<" + name + ">" + xmlscc(rtnValue) + " + name + ">"
return rtnValue;
},
getBackData: function(xml)
{
var rtnValue = "";
//java(xfire)
var soap = this.getElementsByTagName(xml,"ns1:out");
if(soap.length == 0)
{
//c#
soap = this.getElementsByTagName(xml,this.method + "Result");
}
return soap[0].childNodes[0].nodeValue;
},
getElementsByTagName : function(objNode,tagName)
{
//tagName 形式如 xsd:element ,写出tag的全称
var ell;
if(this.isIE())
{
ell = objNode.getElementsByTagName(tagName);
}
else
{
if(tagName.contains(":")) tagName = tagName.split(":")[1];
ell = objNode.getElementsByTagName(tagName);
}
return ell;
},
getElementAttrValue : function(objNode,attrName)
{
var rtnValue = "";
if(objNode == null) return rtnValue;
if(objNode.attributes[attrName] + "" == "undefined")
{
if(objNode.attributes.getNamedItem(attrName) != null)
rtnValue = objNode.attributes.getNamedItem(attrName).nodeValue ;
}
else
{
if(objNode.attributes[attrName] != null)
rtnValue = objNode.attributes[attrName].value;
}
return rtnValue;
},
isIE : function()
{
var isMSIE = /*@cc_on!@*/false;
return isMSIE;
}
});
Array.extend({
toHash : function (splitChar)
{
var hash = new Hash({});
for(var i=0;i<this.length;i++)
{
if(this[i].split(splitChar).length == 1) contrnue;
var key = this[i].split(splitChar)[0].trim();
var value = this[i].split(splitChar)[1].trim();
hash.set(key, value);
}
return hash;
}
});
function xmlscc(strData)
{
strData=strData.replace(/&/g, "&");
strData=strData.replace(/>/g, ">");
strData=strData.replace(/"<");
strData=strData.replace(/"/g, """);
strData=strData.replace(/'/g, "'");
return strData;
}
相应的调用代码如下:
js 代码
<script type=< span="">"text/javascript">
var service ;
function ajaxRequest()
{
var url = "http://localhost:88/webservicedemo.asmx";
//设置webService传入参数
//
//注意:
//
// 调用webservice(如例子中的webservicedemo.asmx)
// HelloTo(String name) 针对name参数必须写成name=wqj ,还有更多参数一样写,使用&符号分隔(name=11&age=20&.....),使用名称匹配
// 传入的参数数量可以不等于(多于或少于)方法要求的参数
var para = "name=wqj";
var op = {
data:para,
onComplete: showResponse,
onFailure:showError,
update:'ajaxBack'
};
service = new WebService(url,"HelloTo",op);
service.request();
return false;
}
function showError(obj)
{
//obj 是一个xmlHttpRequest对象
alert("error");
}
function showResponse(requestText,requestXML)
{
//requestText 返回的文本
//requestXML 返回的XML
// service.getBackData 就是取出返回的XML中,实际需要的数据
//经过测试兼容 IE,FF
alert(service.getBackData(requestXML));
}
</script>
----------------------------------------------------------------------
JavaScriptSOAP.rar (47.1 KB)
描述: js调用webservice示例
JavaScriptSOAP(V2).rar (49.5 KB)
描述: js,sope第二版
代码再IE6和FF测试通过,对于c#写的webservice和java(xfire)写的,都测试过,没有问题
此代码原型来源于 http://www.guru4.net/ 的javascript soapclient
发现这个下载的js只能用于调用c#的webservice,所以利用mootools,重新封装,达到IE和火狐的兼容的同时,兼容java和c#
(再例子中使用的 mootools.v1.11.js 文件,做过修改)
客户端js调用代码如下
js 代码
----------------------------------------------------------------------
function ajaxRequest()
{
var url = "http://localhost:88/webservicedemo.asmx";
//设置webService传入参数
//
//注意:
//
// 调用.Net 写的webservice(如例子中的webservicedemo.asmx)
// HelloTo(String name) 针对name参数必须写成 <name></name>wqj,还有更多参数一样写,使用名称匹配
// 传入的参数数量可以不等于(多于或少于)方法要求的参数
//
// 调用java(xfire) 发布的webService
// 传入的参数必须与调用方法的参数数量相等,且按传入值的顺序进行匹配
//
var para = "<name></name>wqj"; 这里应该是一个标准的xml形式,源码贴出来时被虑掉了,请参看附件源码
var op = {
data:para,
onComplete: showResponse,
onFailure:showError,
update:'ajaxBack'
};
var service = new WebService(url,"HelloTo",op);
service.request();
return false;
}
function showError(obj)
{
//obj 是一个xmlHttpRequest对象
alert("error");
}
function showResponse(requestText,requestXML)
{
//requestText 返回的文本
//requestXML 返回的XML
alert("ok");
}
WebService类的代码如下(webservice.js)
js 代码
var WSDLS = {};
var WebService = new Class({
url : '',
method : '',
options:
{
method:'GET',
data: null,
update: null,
onComplete: Class.empty,
onError:Class.empty,
evalScripts: false,
evalResponse: false
},
initialize: function(url,method,options)
{
this.url = url;
this.method = method;
this.options = options;
},
request : function()
{
var wsdl = WSDLS[this.url];
if(!wsdl)
{
var op = {method:'GET',async: false};
var wsdlAjax = new XHR(op).send(this.url + "?wsdl", null);
wsdl = wsdlAjax.transport.responseXML;
WSDLS[this.url] = wsdl;
}
this.setSoap(wsdl);
},
setSoap : function(wsdl)
{
var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
var sr =
"" +
""
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:body>"</soap:body> +
"<" + this.method + " xmlns=\"" + ns + "\">" +
(this.options.data === null ?"":this.options.data) +
" + this.method + ">;
this.options.method = 'post';
this.options.data = null;
var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this.method;
var soapAjax = new Ajax(this.url,this.options);
soapAjax.setHeader("SOAPAction", soapaction);
soapAjax.setHeader("Content-type", "text/xml; charset=utf-8");
soapAjax.request(sr);
}
});
在第一个版本中存在以下问题
1. 不能根据webservice的要求输入参数自动组织参数
2. 没有处理返回值
3.一旦webservice调用过程出错,会形成一个死循环(一直弹出error)
V2 说明
1. 解决第一版中死循环的问题
2. 统一输入参数的传入形式(与mootools的ajax使用方式完全一致),形式如name=wqj&age=20&........
3. 自动根据参数名对应的值,组织webservice的传入参数,只根据webservice要求的参数名查找对应的值
与顺序不再有关系.(对于xfire中的输入参数使用名称 in0,in1........)
传入的参数数量也不再要求一致,多的自动丢弃,少的自动传空
4. 对于返回的XML,增加提取方法,返回需要的关键返回值(去掉XML的框框)
详细参照附件源码,下面是部分关键代码
WebService类的代码如下(webservice.js)
js 代码
var WSDLS = {};
var WebService = new Class({
url : '',
method : '',
options:
{
method:'GET',
data: null,
update: null,
onComplete: Class.empty,
onError:Class.empty,
evalScripts: false,
evalResponse: false
},
initialize: function(url,method,options)
{
this.url = url;
this.method = method;
this.options = options;
},
request : function()
{
var wsdl = WSDLS[this.url];
if(!wsdl)
{
var op = {method:'GET',async: false};
var wsdlAjax = new XHR(op).send(this.url + "?wsdl", null);
wsdl = wsdlAjax.transport.responseXML;
WSDLS[this.url] = wsdl;
}
this.setSoap(wsdl);
},
setSoap : function(wsdl)
{
var paraXML = this.getParaXML(wsdl);
alert(paraXML);
var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
var sr =
"" +
" +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:body>"</soap:body> +
"<" + this.method + " xmlns=\"" + ns + "\">" +
paraXML +
" + this.method + ">";
this.options.method = 'post';
this.options.data = null;
var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this.method;
var soapAjax = new Ajax(this.url,this.options);
soapAjax.setHeader("SOAPAction", soapaction);
soapAjax.setHeader("Content-type", "text/xml; charset=utf-8");
soapAjax.request(sr);
},
getParaXML : function(wsdl)
{
var objNode = null;
var rtnValue = "";
//java(xfire)
var ell = this.getElementsByTagName(wsdl,"xsd:element");
if(ell.length == 0)
{
//c#
ell = this.getElementsByTagName(wsdl,"s:element");
}
for(var i = 0; i < ell.length; i++)
{
if(this.getElementAttrValue(ell[i],"name") == this.method)
{
objNode = ell[i];
break;
}
}
if(objNode == null) return rtnValue;
//java(xfire)
ell = this.getElementsByTagName(objNode,"xsd:element");
if(ell.length == 0)
{
//c#
ell = this.getElementsByTagName(objNode,"s:element");
}
if(ell.length == 0) return rtnValue ;
var hash = new Hash();
if(this.options.data != null && this.options.data.clean != "")
{
hash = this.options.data.split("&").toHash("=");
}
for(var i = 0; i < ell.length; i++)
{
var paraName = this.getElementAttrValue(ell[i],"name");
rtnValue = rtnValue + this.getSingleXML(paraName,hash);
}
return rtnValue;
},
getSingleXML : function (name,hash)
{
name = name.trim();
var rtnValue = "";
if(hash.hasKey(name))
{
rtnValue = hash.get(name);
}
rtnValue = "<" + name + ">" + xmlscc(rtnValue) + " + name + ">"
return rtnValue;
},
getBackData: function(xml)
{
var rtnValue = "";
//java(xfire)
var soap = this.getElementsByTagName(xml,"ns1:out");
if(soap.length == 0)
{
//c#
soap = this.getElementsByTagName(xml,this.method + "Result");
}
return soap[0].childNodes[0].nodeValue;
},
getElementsByTagName : function(objNode,tagName)
{
//tagName 形式如 xsd:element ,写出tag的全称
var ell;
if(this.isIE())
{
ell = objNode.getElementsByTagName(tagName);
}
else
{
if(tagName.contains(":")) tagName = tagName.split(":")[1];
ell = objNode.getElementsByTagName(tagName);
}
return ell;
},
getElementAttrValue : function(objNode,attrName)
{
var rtnValue = "";
if(objNode == null) return rtnValue;
if(objNode.attributes[attrName] + "" == "undefined")
{
if(objNode.attributes.getNamedItem(attrName) != null)
rtnValue = objNode.attributes.getNamedItem(attrName).nodeValue ;
}
else
{
if(objNode.attributes[attrName] != null)
rtnValue = objNode.attributes[attrName].value;
}
return rtnValue;
},
isIE : function()
{
var isMSIE = /*@cc_on!@*/false;
return isMSIE;
}
});
Array.extend({
toHash : function (splitChar)
{
var hash = new Hash({});
for(var i=0;i<this.length;i++)
{
if(this[i].split(splitChar).length == 1) contrnue;
var key = this[i].split(splitChar)[0].trim();
var value = this[i].split(splitChar)[1].trim();
hash.set(key, value);
}
return hash;
}
});
function xmlscc(strData)
{
strData=strData.replace(/&/g, "&");
strData=strData.replace(/>/g, ">");
strData=strData.replace(/"<");
strData=strData.replace(/"/g, """);
strData=strData.replace(/'/g, "'");
return strData;
}
相应的调用代码如下:
js 代码
<script type=< span="">"text/javascript">
var service ;
function ajaxRequest()
{
var url = "http://localhost:88/webservicedemo.asmx";
//设置webService传入参数
//
//注意:
//
// 调用webservice(如例子中的webservicedemo.asmx)
// HelloTo(String name) 针对name参数必须写成name=wqj ,还有更多参数一样写,使用&符号分隔(name=11&age=20&.....),使用名称匹配
// 传入的参数数量可以不等于(多于或少于)方法要求的参数
var para = "name=wqj";
var op = {
data:para,
onComplete: showResponse,
onFailure:showError,
update:'ajaxBack'
};
service = new WebService(url,"HelloTo",op);
service.request();
return false;
}
function showError(obj)
{
//obj 是一个xmlHttpRequest对象
alert("error");
}
function showResponse(requestText,requestXML)
{
//requestText 返回的文本
//requestXML 返回的XML
// service.getBackData 就是取出返回的XML中,实际需要的数据
//经过测试兼容 IE,FF
alert(service.getBackData(requestXML));
}
</script>
----------------------------------------------------------------------
JavaScriptSOAP.rar (47.1 KB)
描述: js调用webservice示例
JavaScriptSOAP(V2).rar (49.5 KB)
描述: js,sope第二版
发表评论
-
Android 三大图片加载框架比较
2016-11-30 10:31 10881.哪三大图片加载框架? 1) Pi ... -
Java Calendar 类的时间操作
2016-06-01 21:02 668ava Calendar 类时间操作,这也许是创建日历和管理 ... -
获取电脑ip,所在省份城市
2014-08-27 09:45 683调用了腾讯的ip接口(http://fw.qq.com ... -
获取Android签名证书的sha1值
2014-08-23 23:14 664前言:今天开始研 ... -
java中Keytool的使用总结
2014-08-23 22:40 562J2SDK提供了keytool命令行工具,可以根据指定的参数 ... -
Java基础——Java语法基础(3)
2014-06-19 10:13 570程序控制流程 1、顺序结构 按顺序执行 2、i ... -
Java基础——Java语法基础(1)
2014-06-19 10:11 802Java代码基本格式 Java ... -
android MD5校验码的生成与算法实现
2014-06-17 10:58 888在Java中,java.security.Mes ... -
java中的字符串分割函数 split
2014-06-06 15:01 696Java中的我们可以利用sp ... -
java对xml文件做增删改查
2014-06-04 20:40 1842package com.wss; import jav ... -
获取网络的json文件 Gson解析json文件
2013-11-07 16:21 531/** * 获取网络的json文件 * @pa ... -
Java获取文件类型Mime Type的各种方法
2013-09-16 15:46 1145使用 javax.activation.MimetypesF ... -
Java栈与堆
2013-06-20 22:18 9251. 栈(stack)与堆(heap)都 ... -
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead.
2013-05-02 12:01 698解决Android requires compiler co ... -
java创建文件和目录
2013-04-25 10:30 610创建文件和目录的关键技术点如下: 1、File类的cr ... -
iava创建文件和目录
2013-04-24 19:42 796创建文件和目录的关键技术点如下: 1、File类的cr ... -
Java程序发送邮件的两种方法
2013-01-25 10:57 1873前一段时间我在博客中发表过Java接收解析邮件的程序 ... -
SharedPreferences保存数据
2013-01-24 15:09 889package com.test; import ja ... -
java 把logcat日志保存到SD里
2013-01-22 20:21 1041private void saveLogcat(){ ... -
Android开发系列:查看LogCat日志
2013-01-19 13:06 3450LogCat日志 1. Window & ...
相关推荐
在本文中,我们将深入探讨如何使用JavaScript调用Web服务,特别是SOAP Web服务。JavaScript是一种广泛应用于客户端浏览器的脚本语言,它可以用来与服务器进行交互,包括调用Web服务以获取或发送数据。以下是一个示例...
JavaScript调用WebService是一种常见的在客户端与服务器之间进行通信的方式,特别是在Web应用程序中。在这个示例中,我们将讨论如何使用JavaScript来调用不同平台(如C#和Java)编写的WebService,以及实现跨浏览器...
在本文中,我们将深入探讨如何使用JavaScript调用Web服务,特别是SOAP Web Service。JavaScript是一种广泛应用于客户端Web开发的脚本语言,它允许我们与服务器端的Web服务进行交互,实现异步数据传输,提高用户体验...
本文将深入探讨如何使用JavaScript调用Web Service,以及如何解决在这个过程中遇到的问题,以配合“js调用webservice示例+源码”的主题。 Web Service是一种基于网络的、平台无关的服务,它通过SOAP(Simple Object...
本篇将深入探讨如何使用JavaScript调用WebService,帮助开发者理解和掌握这一技术。 首先,了解WebService的基本概念。WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的应用程序接口(API),允许不同...
本示例旨在详细介绍如何使用JavaScript调用WebService,以及涉及的相关知识点。 首先,我们需要理解什么是WebService。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的,可以通过网络进行通信的软件服务。它...
JavaScript调用WebService是一种常见的在客户端与服务器之间进行数据交互的方式,尤其在Web应用程序中,它允许JavaScript代码直接访问Web服务提供的功能。以下是对这个实例的详细解析和相关知识点的总结: 1. ...
使用javascript 中Ajax技术调用WebService,包括JSP和ASP.NET中两种,其中JSP的WebService使用了XFire框架。 ASP.NET中的WebService做了一个方法示例GetProgress,包含3个参数。 JSP中的WebService做了hello方法的...
JavaScript调用Web Service是一种在客户端通过JavaScript代码与服务器端的Web Service进行交互的技术。Web Service是一种基于SOA(Service-Oriented Architecture,面向服务架构)的设计理念,它允许不同的系统之间...
通过深入学习这三个示例,你可以熟练掌握Ajax和JavaScript调用WebService的基本方法,这对于开发实时交互的Web应用具有极大的价值。实践这些实例,将有助于你更好地理解和运用这些技术,提升你的Web开发技能。
JavaScript调用WebService是一种跨语言的调用方式,允许使用JavaScript语言的前端页面能够调用后端基于C#等其他编程语言编写的WebService服务。WebService是一种独立于平台和编程语言的服务,常用的通信协议是SOAP...
本示例将深入探讨如何使用jQuery来调用WebService,通过源代码解析相关知识点。 首先,了解jQuery的核心功能对理解jQuery调用WebService至关重要。jQuery提供了`$.ajax()`函数,它是进行异步数据请求的基础。在这个...
### 使用JavaScript调用WebService的方法与实例 随着互联网技术的发展,跨平台、跨语言的数据交互变得越来越重要。在众多实现方式中,使用JavaScript调用WebService是一种常见的解决方案。本文将基于提供的标题“用...
本文将详细介绍如何使用jQuery的Ajax方法来调用WebService,并通过具体的示例代码来阐述其工作原理及实践应用。 #### 二、基础知识 在深入探讨之前,我们先了解一下基础概念: 1. **Ajax**:一种在无需重新加载整个...
"MvcAndAjax"这个文件名可能代表了一个包含MVC项目和相关的JavaScript文件的示例,用于演示如何在MVC应用中使用AJAX调用WebService。在这个项目中,你可能会找到一个控制器、视图以及用于调用WebService的...
#### 使用JavaScript调用WebService 给定的部分内容展示了一种使用JavaScript来调用WebService的方法。此方法主要依赖于`Microsoft.XMLHTTP`对象,这是一个用于发送HTTP请求并接收响应的对象,通常在客户端脚本中...
综上所述,JavaScript调用WebService涉及到的主要知识点包括:XMLHttpRequest对象的使用、SOAP消息的构造、跨域请求的处理以及响应数据的解析和处理。在实际项目中,理解这些概念和技术将有助于你更有效地实现客户端...
本压缩包包含了一个简单的示例项目——"WebApplication1",用于演示如何使用JavaScript调用WebService。 在JavaScript中,调用WebService通常涉及到XMLHttpRequest对象或更现代的fetch API。以下是一些关键知识点:...