-2

我是 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 更改为我网站上的内部页面,我会看到警告框。当我使用此 URL 时,我没有收到任何响应框。我尝试将数据类型设置为 json 和 jsonp 但没有。有任何想法吗?

谢谢。

4

2 回答 2

1

您不能只指定dataType: jsonp并期望一切正常。这样做是让 jQuery 负责 AJAX 调用的客户端部分,但您仍然需要调整服务器端部分以适应 JSONP。

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

echo $_GET['callback']."(".json_encode($arr).")";
于 2012-08-19T17:10:02.680 回答
0

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

于 2012-08-19T17:07:14.247 回答