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/

また、サーバーは単にアクセスを許可することもできることに注意してください。これは、ほとんどのサードパーティ API ベンダーが行っていることです。- http://enable-cors.org/

于 2012-08-23T17:15:47.403 に答える
1

jsonp リクエストのみがクロスドメインで機能します。あなたのやり方は正しいです!

1) 他のドメイン (iframe など) の DOM 要素または JavaScript オブジェクトにアクセスできません。ここで私の回答を参照してください: How can I create a function in another frame?

2) 私たちは、JS から PHP へ、またはその逆に通信するために、このようなことを行っていました (私の回答を参照)。 JavaScript: JSONP を作成するにはどうすればよいですか?

于 2012-08-23T17:25:14.313 に答える