javascript - 在 javascript 中使用网络天气服务

标签 javascript service weather

我想使用 javascript 来使用 cdyne 提供的网络天气服务。 这是我的代码:

<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> 

当我运行代码时,它在警报中显示 [object Object]#error@ 和 [object Object]%error,这意味着 error: function() 和 complete: function 而不是 success: function()叫。有没有人使用 javascript 来消费这个天气服务? 任何帮助将不胜感激。

最佳答案

这里有几个问题:

  1. 您的网址应以 http:// 开头。没有它,您拥有的 URL 将相对于代码所在的文档进行解析。

  2. 您在 POST 中发送 JSON。服务不希望收到包含 JSON 的 POST 的可能性非常高。

  3. 您期待服务返回 JSON ,但它似乎以 XML 回复。

  4. 您正在尝试执行跨域调用,但 Same Origin Policy 阻止了该调用,并且您尝试使用的服务似乎不支持 Cross Origin Resource Sharing . (当我尝试解决上述问题时,我收到错误消息,指出不允许来 self 的来源 [这是 http:/jsbin.com] 的跨域请求)。

查看 service description对于您尝试使用的页面,它看起来不支持 JSON-P , 这意味着您不能从不同的域使用它。您必须使用服务器端进程来查询它。

关于javascript - 在 javascript 中使用网络天气服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15451614/

相关文章:

javascript - 倒数计时器脚本中跳过了很多秒

java - Android 通知监听器服务自行启动

ios - swift 中的雅虎天气 API oauth 请求中的额外参数

iphone - 度数的主要风向?

javascript - Chrome 扩展程序中的浏览器操作打开上下文菜单

javascript - 如何检查应用程序是在前台还是后台

java - 使用 Spring Controller 列出数据库中的对象

javascript - Angular 6 :services with providedIn: 'root' returns empty object in component

json - 带有 URL 的 URLSession 返回错误

javascript - 如何从一组中随机选择一个 div 并为其分配一个事件