新的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');
会得到我期望的结果。
有什么建议吗?
答案 0 :(得分:2)
请勿使用<script>
标记包围您的javascript。您没有使用javascript正文生成HTML文件..您应该将其视为在飞行中生成javascript文件。
Javascript文件也不以<script>