1

私はこれで何時間も座っていました、そして私は理由を理解することができません。

  • q仕事中。URLは私に適切なJSON応答を与えます。これはオブジェクトや配列として表示され、Firebugの[ネット]タブの[JSON]タブには何も表示されません。すべて問題ありません。私はまた、私が仕事を知っている他のURLで試しました。同じことが起こります。

  • 私は小さなアプリの他の場所に別の関数を持っています。wihchは正常に動作し、ほとんど同じもので、別のAPIであり、他の場所から呼び出されます。data正常に動作し、getJSON関数に入ると変数が入力されます。ここでdataは、何も満たされることはありません。

  • Firebugのすべての行にブレークポイントがありましたが、結果はありません。何も起こりません。getJSON行に到達し、関数の後のデバッガーステートメントにスキップします。

    var usedTagCount = 10;
    var searchHits = 20;
    var apiKey = "a68277b574f4529ace610c2c8386b0ba";
    
    var searchAPI = "http://www.flickr.com/services/rest/?method=flickr.photos.search&" + 
                "format=json&api_key=" + apiKey + "&sort=interestingness-desc&per_page="
                 + searchHits + "&jsoncallback=?&nojsoncallback=1&tags=";
    
    var tagString = "";
    var flickrImageData = new Array();
    
    function search(query) {
        for(var i = 0; i < usedTagCount; i++) {
            tagString += query[i].key + ",";
        }
    
        var q = searchAPI + tagString;
    
        $.getJSON(q, function(data) {   
            debugger; /* It never gets here! */
    
            $.each(data.photos.photo, function(i, item) {
                debugger;
                flickrImageData.push(item);             
            });
        });
    
        debugger;
        return flickrImageData;
    }
    

リクエストURLの例(q):

http://www.flickr.com/services/rest/?method=flickr.photos.search&format=json&api_key=a68277b574f4529ace610c2c8386b0ba&sort=interestingness-desc&per_page=20&jsoncallback=?&tags=london,senior,iphone,royal,year,security,project,records,online,after,

JSONView(firefoxプラグイン)はそれを適切にフォーマットできないので、返されるのは実際にはJSONではないのではないかと思います-mime-typeはtext/htmlです。ただし、FirebugはそれをJSONとして解釈します(前述のとおり)。そして、すべてのタグワードはアプリの別の部分から来ています。

4

2 に答える 2

1

私はあなたが削除する必要があるかもしれないと思います

nojsoncallback=1

searchAPI文字列から。

FlickrはJSONPを使用してクロスドメイン呼び出しを有効にします。このメソッドでは、JSONをjsonコールバックでラップする必要があり、nojsoncallback=1パラメーターはこのラップを削除します。

編集:どうやらそれはnojsoncallback = 1で動作します、私はこのコードを私のために動作させました。どのjQueryバージョンを使用していますか?JSONPは1.2以降でのみ使用できます。

これは私にとってはうまくいきます(わずかな変更):

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">

var usedTagCount = 1;
var searchHits = 20;
var apiKey = "a68277b574f4529ace610c2c8386b0ba";


var searchAPI = "http://www.flickr.com/services/rest/?method=flickr.photos.search&" + 
                    "format=json&api_key=" + apiKey + "&sort=interestingness-desc&per_page="
                     + searchHits + "&jsoncallback=?&nojsoncallback=1&tags=";


var tagString = "";
var flickrImageData = new Array();


function search(query) {
tagString = query;


var q = searchAPI + tagString;


$.getJSON(q, function(data) {   


    $.each(data.photos.photo, function(i, item) {
            debugger;
            flickrImageData.push(item);                          
    });
});

}

search("cat");

</script>
于 2009-11-16T11:16:27.967 に答える
0

URLを試してみると:http ://www.flickr.com/services/rest/?method = flickr.photos.search&format = json&api_key = a68277b574f4529ace610c2c8386b0ba&sort = Interestingness-desc&per_page = 10&tags = mongo

必要に応じてデータを返します。getJSONを$.ajax()に変更し、コールバック関数にあるコードを使用して関数jsonFlickrApi(データ)を定義してみてください。

それでも問題が解決しない場合は、コードをjsbin.comに投稿してください<-ライブで試すことができます-デバッグがはるかに簡単です。

于 2009-11-16T11:44:06.763 に答える