从远程JSONP对象访问数据

时间:2017-05-01 12:41:09

标签: javascript jquery json ajax jsonp

我在生成3个随机数的网站上显示此JSONP对象。我试图使用嵌入在HTML文档中的以下脚本来访问它。

<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对象的任何建议吗?

1 个答案:

答案 0 :(得分: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()