2016-06-23 5 views
0

本当に基本的な質問であれば謝罪してください。私は初めてJSONPを使って作業しています。クロスドメインデータを取得してそこからいくつかの要素を抽出するためにJQueryを記述しようとしています。有効なJSONPのリスポンスですか?

私はサービスのURLを入力すると、私は、次の応答を取得

(function(){ 

    var data = { 
     status: 1, 
     content: {"name":"charliebrown", "resultCode":"0", "messageID":"1234"} 
    }; 

    try{ 
     ; 
    }catch(ex){} 
})(); 

私は前jQuery.parseJSON(のようなものを使用しようとしているに整形JSONレスポンスをチェックしたときにこれが検証チェックに失敗しました)。

代わりにこのような応答が必要ですか?

my_jsonp_callback (
    {"name":"charliebrown", "resultCode":"0", "messageID":"1234"} 
) 

私は、元の応答の「内容」部分にのみ興味があります。サーバーから有効なJSONP応答を受け取っていない可能性があると仮定して正しいですか?

+3

最初のコードブロックがサーバーから取得したコードブロックであるとすれば、それはJSONPではありません。 – Pointy

答えて

1

URLにcallback=somethingを入れなかったため、try/catchブロックが空であるとすると、 "maybe"と表示されます。

JSONPは明確なフォーマットではありません。あなたの質問の2番目のコードブロックは、典型的な JSONP応答を示していますが、JSONPが本当に必要とするのは、関数を呼び出してデータを渡すことだけです。

Rosetta Flashに脆弱である可能性があります(実際にはAdobeがそのセキュリティホールを修正したので問題はありませんが、典型的なJSONPレスポンスが望ましくない理由を説明しています)

最初の段落で説明した私の前提を考えれば、;ではなくsomething(data);が3行目の最終行からJSONPとして正常に実行されます。

私の前提が間違っていると、そのコードは何もしません。そのため、全く無意味です。

(これは、JSONPがJavaScriptであり、リクエストしているサービスが応答で好きなJSを実行でき、XSSの問題を開くことができるという事実を強調しています。 JSONPが解決するが、よりクリーンでより柔軟な方法で問題を解決する)

関連する問題