2017-04-17 12 views
0

現在jqueryでOSRS APIを使用しようとしています。jquery Ajax jsonp無効なjsonのトークン・エラーが無効ですが、正しく表示されます

私はこれをレールのhttpartyで使用していましたが、JavaScriptの方法でそれを実行できるかどうかを確認したいと思っていました。

しかし、私はそれが有効に表示されているにもかかわらず、応答のcontenceを解析する問題があるようです。

私のコードは、以下に見られることができます。

// jquery Stuff 
$(document).ready(function() { 
    var url_test = "http://services.runescape.com/m=itemdb_oldschool/api/catalogue/detail.json?item=207&format=json"; 
    $.ajax({ 
    crossDomain: true, 
    dataType: "jsonp", 
    url: url_test , 
    }).done(function (data) { 
     console.log(data); 
     alert("Load was performed."); 
    }); 

}); 

は、これは私がキャッチされないでSyntaxErrorのエラーをスローAPIから取得する「壊れた」responceです:予期しないトークン:

{"item":{"icon":"http://services.runescape.com/m=itemdb_oldschool/1492081307848_obj_sprite.gif?id=207","icon_large":"http://services.runescape.com/m=itemdb_oldschool/1492081307848_obj_big.gif?id=207","id":207,"type":"Default","typeIcon":"http://www.runescape.com/img/categories/Default","name":"Grimy ranarr weed","description":"It needs cleaning.","current":{"trend":"neutral","price":"7,338"},"today":{"trend":"negative","price":"- 20"},"members":"true","day30":{"trend":"positive","change":"+2.0%"},"day90":{"trend":"positive","change":"+8.0%"},"day180":{"trend":"positive","change":"+8.0%"}}} 

があります私はこのデータを正しく読み込むことができます。私は、もし私が推測するところであれば、jsonpを使っているからだと思う。しかし、私はそれがCORSのエラーをスローするように、私はそれがapiの投げJSONデータ型を読み込むことができないようです。だから私はちょっと立ち往生し、これに助けてくれれば幸いです!

答えて

0

戻ってきたものはJSONで、JSONPではありません。あなたの応答が

{"name" : "Joe"} //json format 

jQueryのように見えますが、このような何かを期待している:

jQuery42534534636363({"name" : "Joe"}) //jsonp format 

をあなたが実際に同一生成元ポリシーを回避するためにJSONPを使用する必要がある場合は、サーバー配信のことができるようにする必要がありますJSONPレスポンスを実際に返します。

同一生成元ポリシーは、アプリケーションの問題ではない場合は、あなただけのjsonの代わりjsonpであるためにあなたのjQuery.ajax呼び出しでdataTypeを修正する必要があります。

// jquery Stuff 
$(document).ready(function() { 
    var url_test = "http://services.runescape.com/m=itemdb_oldschool/api/catalogue/detail.json?item=207&format=json"; 
    $.ajax({ 
    crossDomain: true, 
    dataType: "json", 
    url: url_test , 
    }).done(function (data) { 
     console.log(data); 
     alert("Load was performed."); 
    }); 

}); 

JSONP例(ラッピング機能)

JSON Example

+0

私はレールでそのない私のエンドポイントとhttpartyが何らかの理由で動作するように見えサーバーを所有していけないので、それを回避する方法はあります。 (フォーマットが乱れていた)が、私は文字列の操作を処理することができます。どのように私は応答を取得し、それを自動的に解析することはできません。 – Morphasis

+0

jsonを使用している場合は、CORSエラーを返しますか?右? –

+0

プラグイン(allow-cross-origin)を簡単に追加することも、このチュートリアルを[stackoverflow]から試すこともできます(http://stackoverflow.com/questions/5584923/a-cors-post-request-works-from-plain -javascript-but-why-with-jquery) –

関連する問題