在没有Ajax或其他类似功能的情况下,用JavaScript调用Web服务的最简单方法是什么?
可能重复:在没有Ajax或其他类似功能的情况下,用JavaScript调用Web服务的最简单方法是什么?,javascript,web-services,Javascript,Web Services,可能重复: 请注意,我仍然习惯于JavaScript。基本上,我需要编写一个HTML文件,该文件使用Javascript调用两个web服务方法(与HTML文件来自同一服务器),而不使用Ajax或可能需要单独安装的其他任何东西。我们已经有了web服务,并且运行良好,还有一些JS。这需要对IE、FF和Chrome起作用,包括“落后于时代”几年的计算机。做这件事的真正简单的方法是什么?再一次,我仍然有点被JavaScript打湿了脚,所以我很难理解和使用我所看到的一些示例。谢谢 编辑:下面是我一直在
请注意,我仍然习惯于JavaScript。基本上,我需要编写一个HTML文件,该文件使用Javascript调用两个web服务方法(与HTML文件来自同一服务器),而不使用Ajax或可能需要单独安装的其他任何东西。我们已经有了web服务,并且运行良好,还有一些JS。这需要对IE、FF和Chrome起作用,包括“落后于时代”几年的计算机。做这件事的真正简单的方法是什么?再一次,我仍然有点被JavaScript打湿了脚,所以我很难理解和使用我所看到的一些示例。谢谢 编辑:下面是我一直在尝试的一个例子:
<html>
<head>
<title>Hello World</title>
<script language="JavaScript">
var iCallID;
function InitializeService(){
alert("spam");
try {
service.useService(<WSDL address>,
"HelloWorldService");
} catch (e) {
alert(e.message);
}
alert("spam");
service.HelloWorldService.callService("HelloWorld");
alert("spam");
}
function ShowResult(){
alert("spam");
alert(event.result.value);
alert("spam");
}
</script>
你好,世界
伊卡利德变种;
函数InitializeService(){
警报(“垃圾邮件”);
试一试{
service.useService(,
“HelloWorldService”);
}捕获(e){
警报(e.message);
}
警报(“垃圾邮件”);
service.HelloWorldService.callService(“HelloWorld”);
警报(“垃圾邮件”);
}
函数ShowResult(){
警报(“垃圾邮件”);
警报(事件、结果、值);
警报(“垃圾邮件”);
}
我得到了“垃圾邮件”,然后是“对象不支持此属性或方法”,然后什么都没有。好的,AJAX从驴子时代就开始了,真的。但由于您不熟悉JS,这里有一个小的复制粘贴功能,您可以使用:
function ajax(url,method,data)
{
var xhr;//ajax object
data = data || {};//default ajax request
method = method || 'POST';
url = url || 'default/url/ajax';
try
{//normal browsers
ret = new XMLHttpRequest();
}
catch (error)
{//older IE browsers, including dead IE6
try
{
ret= new ActiveXObject('Msxml2.XMLHTTP');
}
catch(error)
{
try
{
ret= new ActiveXObject('Microsoft.XMLHTTP');
}
catch(error)
{
throw new Error('no Ajax support?');
}
}
}
if (typeof ret !== 'object')
{//if fails (almost impossible)
throw new Error('No Ajax, FFS');
}
ret.open(method, url, true);//open ajax connection
ret.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
ret.setRequestHeader('Content-type', 'application/x-www-form-urlencode');
ret.onreadystatechange = function()
{
if (this.readyState === 4 && this.status === 200)
{
var response = this.responseText;
//code you want to see executed when the call was successful
}
};
return ret.send(data);
}
用法:
ajax('your/ajax/url','POST','id=12');
这将向服务器发送一个ajax请求,带有一个POST参数id
,值12
。。。好好玩玩吧。一些有用的东西:,尽管我不太喜欢,但它有一个现成的内置$。ajax
方法,只需传递一个对象文本,就可以了
请随意编辑此功能如果要使用web服务,必须在客户端计算机上的运行页面和承载该服务的服务器之间创建连接。这样做的总称是AJAX。它不是您安装的单独技术,而是描述JavaScript DOM中可用的XMLHttpRequest对象的使用的术语。有大量资源介绍跨浏览器使用
许多JavaScript库都有跨浏览器的实现,您可以不用担心细节。jQuery、MooTools、原型。。。等等。Ajax不是必须单独安装的东西。Ajax是至少必须单独启用的东西吗?只是好奇而已。JavaScript是否能够在XHR进入语言之前调用web API/服务,或者直到那时它只用于HTML页面中的DOM操作?@RBT AFAIK,JS从很早的时候就具备了与服务器端技术连接的能力。在JS1.1版本中,谷歌快速搜索出了一个
liveConnect
调用。我似乎记得,这种语言最初是为了在浏览器中美化客户端而开发的。也就是说,domapi从来都不是(现在仍然不是)JS本身的一部分。这就是为什么该语言可以移动到服务器端,并且根据运行时的不同,可以在应用程序中用作脚本语言的原因。这只是向运行时引入一个新对象的问题