2012-10-20 4 views
5

こんにちは私はこのコードを使用してリモートホストからjsonを読み取ろうとしています。Jqueryリモートホストからjsonを取得

<!DOCTYPE html> 
<html> 
<head> 
<script src="jquery.js"></script> 
<script> 
$(document).ready(function(){ 
$("button").click(function(){ 
$.getJSON("http://50.116.19.49/rest/user.json",function(result){ 
    $.each(result, function(i, field){ 
    $("div").append(field + " "); 
     }); 
    }); 
    }); 
}); 
</script> 
</head> 
<body> 

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

</body> 
</html> 

問題は、ブラウザにURLを入力すると、そこからjsonを取得するときです。しかし、上記のjqueryメソッドを使用してjsonを取得できませんでした。

この点で助けてもらえますか?ありがとう

+2

リモートホストができませんので、適切なクロスオリジン・ヘッダを追加しない限り。リモートサービスを管理していますか? – PhonicUK

+0

上記のjsonサービスはDrupal rest serviceです。どのように私はクロスヘッダーを行う必要がありますか教えてください。ありがとうございました。 –

+0

RESTにjsonpの出力バージョンがある場合は、 – charlietfl

答えて

4

ドメイン間の問題があるため、JSONPを使用する必要がありますので、jqueryメソッドを次のように変更してください。

URLに "callback =?"という文字列が含まれている場合は、 (またはサーバー側APIの で定義されているように)、リクエストは代わりにJSONPとして処理されます。

$.getJSON("http://50.116.19.49/rest/user.json?jsoncallback=?",function(result){ 
    $.each(result, function(i, field){ 
    $("div").append(field + " "); 
     }); 
    }); 

jQueryのマニュアル:http://api.jquery.com/jQuery.getJSON/

+0

私はこれをチェックしたが動作していない。私のサイトはCORSが有効です。 –

+8

@ h_a86:なぜあなたはこれを受け入れられた回答とマークしましたか? – defau1t

+0

何がアラート(フィールド)になっていますか? – GBD

0

クロスドメインクエリは許可されていません。考えられる回避策については、ajax jquery: can't get json/xml from other domainを参照してください。他の方法は、リモートホストへのローカルクエリをプロキシするために同じドメイン上でプロキシを使用することです。

6

JSONをホストするサイトからこのページが配信されていないと仮定しています。

ほとんどの(?)ブラウザが許可するクロスドメインリクエストを試行しています。あなたはブラウザの同じ起源のポリシーと呼ばれるものに遭遇しています。これは、ブラウザに組み込まれたセキュリティ対策です。要求しているページと同じ原点にない場所へのXHR要求はできません。

この周りにいくつかの方法があります。

  1. は、リクエスト(GBDの回答を参照してください)
  2. CORS
  3. に見えるように要求
  4. 使用JSONPを作るために、サーバー側のプロキシを使用します
+0

こんにちは私は最後のリンクをチェックして、私のサイトがすでにCORSが有効であることを確認しました。 –

+0

JSコンソールを見てください。何を伝えていますか?どのブラウザを使用していますか? –

+0

私はChromeを使用しています。これは、jqueryまたはjavascriptのハッキングを行うための代替方法ですか? –

関連する問題