0

次のコードを使用して、URL からデータを取得しています。

$.ajax({
    url: 'http://183.77.251.173:90/api/function/getprice.aspx?code=1301&length=3M',
    success: function (data) {
        alert(data.results[0].address_components[0].long_name);
    },
    error: function (jqXHR, exception) {
        alert(jqXHR.status);
    }

ただし、ステータス コードのエラーがスローされます0。これは何が原因かわかりませんか?私crossDomian:trueも設定しようとしましたが、それでも同じエラーがスローされます。

http://www.google.comのエラー ステータス コードも返すURL も変更しました0。なんで?理由は何ですか?リモート URL からデータを取得する正しい方法は何ですか?

4

4 に答える 4

3

JSONP または CORS を使用していない限り、クロス ドメイン リクエストを行うことはできません。それらの可用性は、情報を要求しているドメインの API によって異なります。

これは、 Same Origin Policyとして知られる最新のブラウザのセキュリティ機能です。

于 2013-08-19T12:11:54.503 に答える
0

jQueryを使用しているため、パディング(またはJSONP)を使用してJSONを検索します。http: //api.jquery.com/jQuery.getJSON/をご覧ください。

そのサイトから盗まれた例:

<script>
(function() {
  var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
  $.getJSON( flickerAPI, {
    tags: "mount rainier",
    tagmode: "any",
    format: "json"
  })
  .done(function( data ) {
    $.each( data.items, function( i, item ) {
      $( "<img/>" ).attr( "src", item.media.m ).appendTo( "#images" );
      if ( i === 3 ) {
        return false;
      }
    });
  });
})();
</script>

編集:

エラー応答を改善するために jquery.jsonp-2.4.0 を使用した自家製の例 ( https://github.com/jaubourg/jquery-jsonp/downloads )。ただし、プレーンな jQuery も使用できます。

クライアント側では、次のようなものが必要です。

$.jsonp({
    "url": target_url+"ping.php?callback=?",
    "success": function(data) {
        // print out data
    },
    "error": function(d,msg) {
        // error
    }
});

ターゲット サーバー上の ping.php ファイル:

<?php
    echo $_GET['callback'] . '(' . "{'response' : 'success'}" . ')';
?>
于 2013-08-19T12:14:46.397 に答える
-3

クロスドメインで使用する場合$.getJSON()

$.getJSON('http://183.77.251.173:90/api/function/getprice.aspx?code=1301&length=3M', function(data){
alert(data.results[0].address_components[0].long_name);
});
于 2013-08-19T12:14:24.270 に答える