2015-02-19 2 views
0

Почему, кажется, работает следующий код javascript function handleResponse() без его вызова? Следующий код использует API Google Книги.Использование функции Javascript без вызова

<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>

+0

Читайте о [JSONP] (http://en.wikipedia.org/wiki/ JSONP). 'handleResponse()' получает вызов по сценарию, который генерирует API Google. – jfriend00

ответ

1

handleResponse() - это обратный вызов jsonp. Это прежде всего форма общения на веб-страницах, что является обходным путем для политики браузера с одинаковым исходным кодом.

Многие услуги используют эту форму связи, например. щебет.

Образец здесь заключается в том, что вы передаете что-то в URL-адресе (обычно это параметр callback), который на самом деле является именем метода на вашей веб-странице (в данном случае handleResponse). Служба (которая имеет данные) сформирует javascript, чтобы обработать handleResponse (как обычную js-функцию с аргументами). Аргументы могут быть, например, некоторые данные, возвращаемые службой. В случае твиттера это могут быть временные каналы; в вашем случае поиск в вашей книге.

По сути вы вызываете, что URL в теге сценария ... и Javascript для следующего эффекта выполняется:

handleResponse(some_data); 
3

Вы передавая строку запроса в URL: callback=handleResponse.

На сервере создается сценарий для вызова функции обратного вызова в качестве ответа.

enter image description here

Попробуйте обновить обратного вызова, как я сделал, callback=reply2me:

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

enter image description here

Смежные вопросы