从远程 JSONP 对象访问数据

Accessing data from a remote JSONP Object

我在生成 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 对象如下所示:

目前我收到一个错误。 "Can't find variable: randomNum" 这告诉我我没有正确瞄准对象。 同样重要的是要注意,当我按下 F12 时,JSONP 对象确实出现在我的资源中。

关于如何定位远程 JSONP 对象有什么建议吗?

问题出在您的 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().