2012-04-27 6 views
0

私のウェブサイトでこのコードを実行すると、セットで写真を取得できますが、いつもエラーが発生します。コンソールログには "parsererror"と表示されます。私は間違って何をしていますか?jQueryを使ってflickr apiを呼び出す

middle.php

<?php die(file_get_contents($_REQUEST['url'])); ?> 

script.js

//Flickr 
var url = encodeURIComponent('http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=1408bff5f72a4b84b924d13e8562b6a2&[email protected]&photoset_id=72157629903184261&format=json'); 
$.ajax({ 
    url: "middle.php?url="+url, 
    dataType: "json", 
    success: function(){ 
     console.log("yes"); 
    }, 
    error: function(jqXHR, textstatus, errorThrown){ 
     console.log("nooo"); 
     console.log(textstatus); 
    } 
}); 
+0

よりこのコードはコーシャに見えますが、JSONデータをフェッチするgetJSON()を使用したいです。おそらくあなたのコードのどこかにエラーがありますか? – Dutchie432

+1

[同じ起源](http://ja.wikipedia.org/wiki/Same_origin_policy)? – prodigitalson

+1

は中級者のテクニックを追加しました –

答えて

3

あなたがあるため、クロスドメインセキュリティの問題の問題を抱えている場合は、「中間業者」を作成したいと思いますページ。私は私の例としてPHPを使用します。異なるドメインのURLを受け入れ、テキスト/コードを取得して返します。middle.phpを作成します。私のJSは、これを同じサイトのリクエストとみなし、すべてが素敵です。

middle.php

<?php die(file_get_contents($_REQUEST['url'])); ?> 

PHPは、あなたが使用しているものでない場合は、独自の環境で同じ戦略を適用することができます。

その後、あなたのAJAX呼び出しは次のようになります。..

var url = encodeURIComponent('http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=1408bff5f72a4b84b924d13e8562b6a2&[email protected]&photoset_id=72157629903184261&format=json'); 

$.ajax({ 
    url: "middle.php?url="+url, 
    dataType: "json", 
    success: function(){ 
     console.log("yes"); 
    }, 
    error: function(jqXHR, textstatus, errorThrown){ 
     console.log("nooo"); 
     console.log(textstatus); 
    } 
}); 

しかし、私はもっとそうajax()

$.getJSON("middle.php?url="+url, function(obj){ 
    if (obj.photoset){ 
     console.log("Success"); 
    } else { 
     console.log("Error"); 
    } 
}); 
+0

私はそれを手に入れません...なぜ私のindex.phpはそれを得ることができませんが、middle.phpはできますか? –

+2

index.phpはJAVASCRIPTを使用してフェッチするため、middle.phpはフェッチしません。同じドメインのセキュリティ(この説明のため)はJSにのみ適用され、ブラウザによって規制されています。 – Dutchie432

+0

男、最後のコメントはすごかった。私はそれを知らなかった。しかし、私はまだpasererrorを取得しています:S –

関連する問題