我正在尝试访问其他网站上创建的Javascript API。 javascript位于https://ksc105.kscserver.com/query.js,它将ajax调用到https://ksc105.kscserver.com/suggestions.php(?action = getall)。当然在https://ksc105.kscserver.com/index.php上使用它。
但是我正在尝试将javascript导入到另一个域名网站。我知道跨域ajax调用不起作用,但我认为如果ajax调用是从该网站上的javascript开始的那么它将起作用。我认为这基于谷歌的Map API。我很确定它使用了ajax。
如何让Ajax像Google Map API一样工作?任何网站可以添加我的脚本并使用其功能吗?
在萤火虫中,我得到了开火的请求,但我得到一个空的回归,但它不应该返回空。在IE9中,我收到错误“SCRIPT5:访问被拒绝”。 /“query.js,第62行第5个字符。”
如果您转到https://ksc105.kscerver.com/index.php并在框中输入3个或更多字符,则应获得与Google搜索类似的“建议”。我需要在没有服务器代理的情况下在任何其他网站上工作。您可以使用“测试”,因为它会提取大量测试数据。
答案 0 :(得分:2)
尝试使用AJAX回调。 jQuery做得很好,但作为一个原始示例,如果您使用回调函数加载一些JSON(来自<script>
标记),它将运行该函数。这就是您可以跨站点使用Twitter API的方法。 I.E.如果你打电话给http://api.twitter.com/1/statuses/user_timeline.json?screen_name=twitter&count=20&callback=handletwitter
并创建一个handletwitter函数:
<script type="text/javascript">
function handletwitter(data){
console.log(data);
}
</script>
<script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline.json?screen_name=twitter&count=20&callback=handletwitter"></script>
这也称为JSONP
答案 1 :(得分:1)
有一个聪明的解决方案可以做到这一点。您可以拥有宽度和高度为0的iFrame,因此它不可见。在其中,您可以使用“父”属性在主页上加载数据。由于您可以在iFrame中加载任何内容,因此这应该是一个很好的解决方案。 请考虑以下示例(也适用于不同的域)。
<html>
<head>
<script type="text/javascript">
function loadData(data)
{
var a = document.getElementById("H");
a.innerHTML = data;
}
</script>
</head>
<body>
<div id="H">hello</div>
<iframe src="sample.html" width="0px" height="0px">
</iframe>
</body>
</html>
<强> Sample.html
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<script>
<!--
parent.loadData("I am inside iFrame");
-->
</script>
</body>
</html>