2011-07-23 5 views
0

私はjQueryを使用してYahooのGeolocation APIにアクセスしています。サーバーからデータを正常に取得することはできますが、jQueryにデータを正常に解析させることはできません。私は$ .ajax()と$ .getJSONの両方を試しましたが、それぞれ同じ失敗を返します:parsererrorと "invalid label"。「無効なラベル」jQueryとYahooのGeolocation APIによるparsererror

JSONがかっこで囲まれていないため、「無効なラベル」が発生する可能性が高いことがわかりましたが、その前にデータをラップする方法はわかりません解析される。私はそれが問題だと確信していない。事前に

$.ajax({ 
    url: url, 
    data: {}, 
    dataType: "jsonp", 
    contentType: "text/plain", 
    success: function(json) { 
    alert("success"); 
    }, 
    error: function(x,y,z) { 
    alert(JSON.stringify(x)); 
    } 
}); 

多くの感謝を次のように

$(document).ready(function() { 
    var url = "http://where.yahooapis.com/geocode?q=39.0334171,-94.8320452&gflags=R&flags=JT&appid=supersecretappid&callback=?"; 

    $.getJSON(url, function() { alert("success"); }) 
     .error(function(data) { alert(JSON.stringify(data)); }); 

    }); 

ちょうど$アヤックスを使用して別のバージョンがある:

は、ここに私のコードです。

答えて

1

アクセスしようとしているAPIがJSONPをサポートしていません。だからsame origin policyの制限のためにjavascriptで使用することはできません。お使いのブラウザで次のURLを貼り付けてみてください。

http://where.yahooapis.com/geocode?q=39.0334171,-94.8320452&gflags=R&flags=JT&appid=supersecretappid&callback=foo

callbackパラメータは完全に無視される方法を参照してください?サーバーは、あなたが必要とするJSONPではなく、純粋なJSONを返します。回避策として、あなたのドメインにYahooとあなたのドメインの間のブリッジとして機能するサーバーサイドスクリプトを書くことができます。それから、スクリプトにAJAXリクエストを送信します。

+0

私は、サーバーリソースを解放するために、コールバックと解析をクライアントにプッシュしようとしていました。私はそれを処理するサーバーをhahveする必要がありますね。 – samullen