2017-05-01 11 views
0

このJSONPオブジェクトは、3つの乱数を生成するサイトに表示されています。 HTML文書に埋め込まれた次のスクリプトを使用してアクセスしようとしています。リモートJSONPオブジェクトからデータにアクセスする

<script> 
var url = 'http://dev.apalfrey.me/workspace/te2006-te2801/'; 

$.ajax({ 
    type: 'GET', //uses GET function 
    url: url, //stored URL in var 
    data: { 
     'callback': 'randomNum' 
    }, 

    jsonpCallback: 'randomNum', 
    contentType: 'application/jsonp', 
    dataType: 'jsonp' 
}).done(function(response) { 
    console.log(randomNum.num1); //ERROR IS HERE randomNum. 
}); 
</script> 

JSONPオブジェクトは、次のようになります。

JSONP Object displaying random numbers

現在、私はエラーを取得しています。 "変数を見つけることができません:randomNum"これは、オブジェクトを正しくターゲットに設定していないことを示しています。 また、F12を押すと、JSONPオブジェクトが自分のリソースに表示されることに注意することも重要です。

どのようにリモートJSONPオブジェクトをターゲットにするかに関する提案はありますか?

答えて

4

問題はdone()ハンドラにあります。存在しないrandomNumという名前の変数を使用しようとしています。その代わりに、response変数をハンドラ関数に渡して使用する必要があります。

また、responseは配列になりますので、インデックスで必要な項目にアクセスする必要があります(例:response[0].num1)。これを試してみてください:

var url = 'http://dev.apalfrey.me/workspace/te2006-te2801/'; 
 

 
$.ajax({ 
 
    type: 'GET', 
 
    url: url, 
 
    jsonpCallback: 'randomNum', 
 
    dataType: 'jsonp' 
 
}).done(function(response) { 
 
    console.dir(response); 
 
    console.log(response[0].num1); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

はまた、あなたの意図は、単に乱数を生成することであるならば、AJAXは巨大な過剰であることに注意してください。 Math.random()を使用することができます。

+1

'Math.random()'?いいえ、もっとjQueryが必要です。 – Cerbrus

+0

もちろんMath.random()を使うことができます。これは、JSONオブジェクトへのアクセスがどのように機能するのかを学ぶのに役立つ練習です。ありがとう、私は時間を持っているときに私のコードを見て、変更を加えます(次の24時間)。私はあなたの答えを私がそれを働かせたらすぐに正しいものとしてマークします。ありがとう@Rory McCrossan。 –

+0

あなたが気づいていることを確認しています:)喜んで助けてください –

関連する問題