如何让ajax像Google Map API一样工作?

时间:2011-06-01 15:32:42

标签: php ajax api

我正在尝试访问其他网站上创建的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搜索类似的“建议”。我需要在没有服务器代理的情况下在任何其他网站上工作。您可以使用“测试”,因为它会提取大量测试数据。

2 个答案:

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