没有从jquery.ajax跨域回复

时间:2012-08-19 17:03:41

标签: jquery ajax json

我是jQuery.ajax的新手,所以请耐心等待。我正在尝试创建一个表单来验证针对公共api的地址,data.citycofchicago.org。如果我直接点击URL(http://data.cityofchicago.org/api/views/i6bp-fvbx/rows/1478.json),我会看到json格式的页面。但是,我似乎没有使用ajax获得响应。这是我的代码:

<script LANGUAGE="JavaScript" SRC="/scripts/jquery-1.7.1.js"></script>
<script type="text/javascript">
$('document').ready(function(){
    $('#button').click(function(){
        $.ajax({
            type: 'get',
            url: 'http://data.cityofchicago.org/api/views/i6bp-fvbx/rows/1478.json',
            success: function() {
                    alert('Got a response!');
                }
        });
    });
});

如果我将网址更改为网站上的内部网页,我会看到提示框。当我使用此URL时,我没有得到任何响应框。我已经尝试将数据类型设置为json和jsonp,但没有。有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您不能只指定dataType: jsonp并希望一切正常。这样做是因为jQuery会处理AJAX调用的客户端部分,但是你仍然需要调整服务器端部分来容纳JSONP。

基本上,当您指定JSONP时,jQuery会自动发送带有随机生成的值的callback参数,例如“jQuery4857439875349_489437589374”。您需要在服务器端代码中执行的操作是将返回的数据包装在指定的回调中,如下所示:

echo $_GET['callback']."(".json_encode($arr).")";

答案 1 :(得分:0)

浏览器不支持Ajax跨域请求,以阻止您的网站上的XSS或恶意脚本。您只能在内部页面上使用Ajax。这也适用于单独的子域。希望有所帮助。