为什么以下javascript代码似乎在没有被调用的情况下运行function handleResponse()
?以下代码使用Google Books API。
<html>
<head>
<title>Google Books API Example</title>
</head>
<body>
<div id="content"></div>
<script>
function handleResponse(response) {
var item = response.items[0];
document.getElementById("content").innerHTML = item.volumeInfo.title + "<br>" + item.volumeInfo.authors[0];
}
</script>
<script src="https://www.googleapis.com/books/v1/volumes?q=rosie+project&callback=handleResponse"></script>
</body>
</html>
&#13;
答案 0 :(得分:3)
您将查询字符串传递给网址:callback=handleResponse
。
在服务器上生成一个脚本以调用回调函数作为响应。
尝试像我一样更新回调,callback=reply2me
:
https://www.googleapis.com/books/v1/volumes?q=rosie+project&callback=reply2me
答案 1 :(得分:1)
handleResponse()是一个jsonp回调。这主要是网页中的一种沟通形式,它是浏览器同源政策的一种解决方法。
许多服务使用这种形式的通信,例如鸣叫声。
这里的模式是你在url中传递一些东西(通常是一个名为callback
的参数),它实际上是你网页上方法的名称(在本例中是handleResponse)。该服务(具有数据)将形成javascript到handleResponse将被执行的效果(作为带参数的普通js函数)。争论可以是例如服务返回的一些数据。在twitter的情况下,这可能是时间线馈送;在您的情况下,您的图书搜索。
基本上你是在脚本标签中调用那个url ...并执行以下效果的javascript:
handleResponse(some_data);
答案 2 :(得分:0)
使用URI加载的脚本
https://www.googleapis.com/books/v1/volumes?q=rosie+project&callback=handleResponse
在加载时调用handleResponse,因为您将其作为查询参数传递。