Новый Restful API, такой как Google, OpenStreetview использует простой механизм обратного вызова. В основном вы вызываете API, добавляя параметр &callback=my function
. При выполнении вызова этого API, в результате моя функция называется передачей набора данных JSON.
Я пытаюсь создать тот же механизм для API, который я создаю для личного использования.
Насколько я понял, API должен вернуть javascript, который вызывает функцию, переданную в скрипте. Для теста я создал это:
function apiCall(URL,values, keyPair,cBackPair) {
// URL specifics URL to call
// keyPair: <keyname>=<key>; leave black if unneeded
// cBacPair: <callBackParametername>=<functionname>
// called is: URL?values&keypair&cBackPair
var request = (keyPair)?'&'+keyPair:'';
request = URL + '?'+ encodeURI(values) + request + '&' + cBackPair;
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", request);
document.body.appendChild(script);
}
function callAPI() {
apiCall('http://xllent.nl/map/ajax/answer.php','q=one','','s=doit');
}
function doit(result) {
alert(result);
}
Для проверки я вызываю callAPI
onload.
Сценарий answer.php
очень прост:
<?$s = $_GET['s'];
?>
<script type="text/javascript">
doit('jeroen');
</script>
Позже скрипт будет использовать $s
для вызова правильного скрипта и, конечно же, предоставления пользовательских данных.
Пока я просто пытаюсь получить скрипт doit('jeroen');
для запуска. Но ничего не происходит. Ввод javascript:doit('jeroen');
в окне браузера дается результат, которого я ожидал бы.
Какие-либо предложения?
Не окружайте свой javascript тегами <script>
. Вы не генерируете HTML файл с телом javascript. Вы должны думать об этом, как будто вы создаете файл javascript на лету.
Файлы Javascript также не запускаются и не заканчиваются <script>