尝试使用jquery使用Web服务时出错

时间:2014-01-10 11:26:00

标签: javascript html web-services jquery

我是jquery的新手。我正在尝试使用html和jquery来使用 http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP 的Web服务。我写了以下代码:

<!DOCTYPE html>
   <page language ="html" validateRequest="false">
   <html>
<head>
     <title>Hello There</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> type="text/javascript" > </script>
</head>
<body>
      <div>
        IPAddress: <input type="text" name="id" id="theId"/>
        <br />
        <button id="getRemoteResponseBt">Get remote response</button>
      </div>
      <script>
        var url='http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP';
        var dataMessage=
         '<?xml version="1.0" encoding="utf-8"?> \
         <soap:Envelope 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> \
         <GetGeoIP xmlns="http://www.webservicex.net/"> \
         <IPAddress>+theId.val()+</IPAddress> \
         </GetGeoIP> \
         </soap:Body> \
         </soap:Envelope>';

$("#getRemoteResponseBt").click(function() {
   $.ajax({
     url: url,
     dataType: "xml",
     data: dataMessage,
     processData: false,
     contentType: "text/xml; charset=\"utf-8\"",
     success: function(text) {
       var xml = $(text);
       var id = xml.find('IP').text();
       var name = xml.find('CountryName').text();
       var code = xml.find('CountryCode').text();
       alert("Result:" + id +name+code);
     },
     error:function (xhr) {
       alert(xhr.responseText+"Error");
     }
   });
 return false;
 });        
</script>
</body>
</html>

但是当我点击Button时,每次都会出错。任何人都可以帮助使代码工作吗?有关Web服务说明,请检查链接:http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP

1 个答案:

答案 0 :(得分:1)

这是尝试从您的域发布到 webservicex.net 的跨域帖子,除非接收服务器实现CORS,否则浏览器same origin policy禁止该帖子。

API旨在从服务器端脚本调用,其中相同的源不适用,因此您需要在域中查找备用服务或创建代理脚本。