2

我曾问过一个问题,为什么大多数 ajax 解决方案都涉及一些后端语言,如 PHP。

有人告诉我这是因为由于相同的域策略,Web 浏览器不允许完整的 javascript/jquery 解决方案。然而下面的代码绝对运行良好:

<script type="text/javascript">
        $(document).ready(function () {
            $("#1").click(function () {

                $.ajax({
                    type: "GET",
                    url: "http://api.wunderground.com/api/ac7e64a2f6e2d440/geolookup/conditions/q/IA/Cedar_Rapids.json",
                    dataType: "jsonp",
                    success: function (parsed_json) {
                        $('div').html("Current temperature in " + parsed_json.current_observation.temp_f);
                        alert(parsed_json.location.city);
                        var location = parsed_json['location']['city'];
                        var temp_f = parsed_json['current_observation']['temp_f'];
                        alert("Current temperature in " + location + " is: " + temp_f);
                    }
                });

            });

        });
</script>

那么这段代码不应该运行吗?我不明白。

谢谢,吉姆

4

2 回答 2

2

dataType: "jsonp",

JSONP 用于绕过同源策略。

这是更多信息的链接 - http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

另外,请注意服务器也可以简单地允许访问。这是大多数 3rd 方 API 供应商所做的。- http://enable-cors.org/

于 2012-08-23T17:15:47.403 回答
1

只有 jsonp 请求可以跨域工作。你的做法是对的!

1)您无法访问其他域(例如在 iframe 中)上的 DOM 元素或 JavaScript 对象,请在此处查看我的答案: 如何在另一个框架中创建函数?

2)我们曾经做过这样的事情(见我的回答)从 JS 到 PHP 并返回。 JavaScript:如何创建 JSONP?

于 2012-08-23T17:25:14.313 回答