在JavaScript中使用Web气象服务(Consuming web weather servic

2019-10-17 20:28发布

我想用JavaScript来消费由CDYNE提供的Web气象服务。 这是我的代码:

<html>  
<head>  
    <title>weather app</title>  
</head>  
<body>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script language="JavaScript">
    function CallService() {
        var DTO = "{ 'ZIP': '85281' }";

        $.ajax({

            type: "POST",
            url: "wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityWeatherByZIP",
            data: JSON.stringify(DTO),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            processData: true,
            success: function (msg) {       
                alert(msg);
            },
            error: function (req, status, error) {
                alert(req + "# " + status + "@ " + error);
            },
            complete: function (req, status) {
                alert(req + "% " + status);
            }
        });
    }
    CallService();
    </script>
</body>  
</html> 

当我运行的代码,它显示了警报,这意味着错误的翻译:#错误@和[目标对象]%错误:()函数和完整:函数,而不是成功:函数()被调用。 是否有任何人谁使用JavaScript来消费这样的天气服务? 任何帮助将不胜感激。

Answer 1:

有有几个问题:

  1. 您的网址应以启动http:// 。 没有它,你的URL相对于文档的代码是在解决。

  2. 你在POST发送JSON。 的几率非常高,服务不希望接收包含JSON一个POST。

  3. 你期待JSON从服务后面 ,但它似乎与XML回复。

  4. 你试图做一个跨域调用,但是这在防止同源策略 ,和你想使用这项服务似乎并不支持跨源资源共享 。 (当我试图将其固定上述问题,我得到了错误,说跨域请求不是从我的出身让[这是http:/jsbin.com ])。

纵观服务描述为你想使用的页面,它看起来并不像它支持JSON-P ,或者说,这意味着你不能从一个不同的域使用。 你必须使用一个服务器端程序进行查询。



Answer 2:

你不能做Ajax请求到不同的域,拨弄http://jsfiddle.net/wAt45/

XMLHttpRequest cannot load 
http://wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityWeatherByZIP. Origin 
http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin. 


文章来源: Consuming web weather service in javascript