使用Javascript函数无需调用

时间:2015-02-19 02:07:04

标签: javascript html function

为什么以下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;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

您将查询字符串传递给网址:callback=handleResponse

在服务器上生成一个脚本以调用回调函数作为响应。

enter image description here

尝试像我一样更新回调,callback=reply2me

https://www.googleapis.com/books/v1/volumes?q=rosie+project&callback=reply2me

enter image description here

答案 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,因为您将其作为查询参数传递。