2012-05-08 2 views
0

コールバックのないJSON呼び出しがあります。私はデータを解析したい。コールバックのないjQueryとJSON URL

$("button").click(function(){ 
    $.getJSON(
     "url", 
     function(result){ 
      $.each(result, function(i, field){ 
       $("div").append(field + " "); 
     }); 
    }); 
});​ 

とHTML

<button>Get JSON data</button> 
<div></div>​ 

しかし、いずれにフェッチされたデータはありません。私のコードで何が間違っていますか?

+1

これを行うには、サイトがjsonpをサポートする必要があります。 JSONは同じサーバー上のファイルでのみ動作します。 – OptimusCrime

答えて

2

を助けjqueryのgetJson

$(document).ready(function(){ 
    $.getJSON('your_server-side_page.php', function(data){ 
    $.each(data, function(i, entry) { 
     // Process your data here 
    }); 
    }); 
}); 

希望。それはリモートベースの要求だからです。過去にこの問題を回避した1つの方法は、サーバー側のファイル(.phpや.aspxなど)を使用してURLをロードし、そのローカルでアクセス可能なファイルでgetJSONを実行することでした。

これは、サーバー側のファイルがリモートホストに接続できるためです。

あなたはjqueryのは、このコードでアクセスするサンプルtest.phpをファイル作成することができますたとえば:

<?php 
header('Content-type: application/xml'); 
//Get the remote content and output it for Jquery's Local use 
echo file_get_contents(url); 
?> 

をそれからちょうど(当然の相対的)を呼び出す:

$("button").click(function(){ 
    $.getJSON(
     "/test.php", 
    function(result){ 
     $.each(result, function(i, field){ 
      $("div").append(field + " "); 
     }); 
    }); 
});​ 

JSONPのようなものをされて使用しかし、時には彼らは過度のことです。 私はこれが助けてくれることを願っています!

+0

ありがとう、しかし、私はこのjqueryとhtml PHPや任意のサーバー側のプログラミングを使用せずに行う。 – TheNone

+0

サーバーサイドコードを使用していない理由はありますか? – Nabster

1

外見では、same origin policyのケースに入っています。これは、基本的には、あなたのページ上の他のホストから取得したデータを使用することはできないということです。

サービス用の(英語)APIドキュメントが見つからないため、JSONPのAPIをチェックして、その機能(存在する場合)を使用することをおすすめします。

もう1つの方法は、データのプロキシとして機能するスクリプトをサーバーに書き込むことです。ページからリクエストを取得し、http://www.bigpara.comにリクエストを転送し、結果をhttp://www.bigpara.comからページに渡します。

+1

私はOPが彼がSOPに走っていることを知っていると思います(彼はパラメータで 'コールバック 'を持っています)。私は彼がコールバックを指定することなくこれを行う方法を探していると思います –

2

提案、あなたがdoesnotにアクセスしようとしているサイトが

<?php 
echo file_get_contents(url); 
?> 

と使用のように、あなたがPHPを言って、いくつかのサーバー側の言語からコンテンツを取得しようとすることができ、同様にJSONPをサポートするように見えるので、私はSarfrazに同意

関連する問題