在没有Ajax或类似的东西的情况下,您可以在JavaScript中调用Web服务的最简单方法是什么?

时间:2012-10-29 16:56:14

标签: javascript web-services

  

可能重复:
  Consuming a Web service using 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>

     

我得到“垃圾邮件”,然后“对象不支持此属性或方法”,然后什么都没有。

2 个答案:

答案 0 :(得分:5)

好的,自从驴子岁月以来,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 ...随之而来。一些有用的东西:JSON,虽然我不是一个大粉丝 - jQuery,它有一个现成的内置$.ajax方法,只需传递一个对象文字而你很高兴。

随意编辑此功能

答案 1 :(得分:1)

如果要使用Web服务,则必须在客户端计算机上运行的页面与托管服务的服务器之间建立连接。这样做的总称是AJ​​AX。它不是您安装的单独技术,而是描述JavaScript DOM中可用的XMLHttpRequest对象的术语。有很多资源描述跨浏览器的使用......

https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

许多JavaScript库都有跨浏览器实现,您可以使用而无需担心细节。 jQuery,MooTools,Prototype ......等。