0

変数を URL に渡しています。URL は、渡された変数によってフィルタリングされた API を呼び出します。ただし、JSON を読み込むことができないようで、JS の Firebug のコンソールに無効なエラーが返されます。考え?

$("a").click(function() {
    var apiurl = "http://api.example.com" + $(this).text() + "&limit=500" + "?callback=?";

    $.ajax({
        url: apiurl,
        success: function(json) {alert(json.data.results);},
        error: function() { alert("error"); },
        dataType: "json",
        contentType: "application/json;charset=utf-8",
    });
});

これはエラーです: 無効なラベル エラー ソース行: [Break On This Error]
{"code":200,"status":"Ok","data":{"offset":0,"limit":500," total":17,"target":"ch...

4

2 に答える 2

3

削除:contentType: "application/json;charset=utf-8"リクエストから。また、$.getJSON()あなたが書いたものの省略形であるメソッドを使用することもできます。また、クリック ハンドラーから false を返すことを忘れないでください。そうしないと、クリックさhrefれているアンカーの後にブラウザーがリダイレクトする前に、呼び出しを実行する時間がない可能性があります。もう 1 つの注目すべき点は、URL の'&callback=?'代わりに使用する必要があることです。これは、明らかにクエリ文字列パラメーターが既にあるため、別のパラメーターを追加するだけだからです。この場合、クエリ文字列の開始を示すがどこかに含まれていると思います。'?callback=?'limit$(this).text()?

$('a').click(function() {
    var apiurl = 'http://api.example.com' + $(this).text() + '&limit=500' + '&callback=?';
    $.getJSON(apiurl, function(json) {
        alert(json.data.results);
    });
    return false;
});

また、呼び出しようとしている API がサポートしなければならないJSONPcallback=?を意味することを理解していただければ幸いです。そうしないと、同じ発信元ポリシーの制限に違反しているため、呼び出しは常に失敗します。

于 2012-07-18T16:53:43.193 に答える
0

が同じドメインにない場合"api.example.com"は、 を使用する必要がありますdataType: 'jsonp'jsonp のドキュメントjQuery.ajaxのドキュメントを参照してください。

于 2012-07-18T17:00:08.060 に答える