创建回调API

时间:2014-12-11 21:16:37

标签: javascript php api callback

新的Restful API就像Google一样,OpenStreetview使用简单的回调机制。 基本上,您调用API,添加参数&callback=my function。 执行对此API的调用时,调用my函数传递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');会得到我期望的结果。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

请勿使用<script>标记包围您的javascript。您没有使用javascript正文生成HTML文件..您应该将其视为在飞行中生成javascript文件。

Javascript文件也不以<script>

开头和结尾