gpt4 book ai didi

ajax - jQuery、JSON 和 Apache 问题

转载 作者:行者123 更新时间:2023-12-01 01:12:09 26 4
gpt4 key购买 nike

我有一个 jQuery JSON 请求,它从另一台服务器(例如 foo.com)加载一些 JSON:

$.getJSON("http://foo.com/json.php",function(data) { alert(data); });

但我收到的数据为空。这不是跨域问题,我尝试了以下方法:

$.getJSON("http://twitter.com/users/usejquery.json?callback=?",
function(data) { alert(data); });

并收到了不错的 JSON 对象。所以,我认为后端 Apache 2.2.14 有问题。以下是从服务器发送的 HTTP header :

Date: Sun, 07 Mar 2010 16:08:38 GMT
Server: Apache/2.2.14 (CentOS)
X-Powered-By: PHP/5.3.1
Content-Length: 2
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: application/json; charset=UTF-8

每种情况下的 header 都是相同的:常规 HTTP 请求或 AJAX。但我通过 AJAX 收到空内容,并通过浏览器请求收到普通 JSON。我使用 Firebug 进行测试,使用 PHP5 来形成 JSON。

有人有什么想法吗?谢谢!

最佳答案

我非常确定,为了进行这样的跨域调用,您必须有一个回调,这是执行 JSONP 所需要的。

这是有关 jsonp 的更多信息 http://www.insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html

要使 jsonp 正常工作,您必须有一个回调让服务器将 json 字符串包装在其中。例如:

$.getJSON("http://foo.com/json.php?callback=?", function(data){});

这里回调函数是由jquery生成并传递到请求中的,所以它会是这样的:

http://foo.com/json.php?callback=generatedFunction

那么服务器返回的应该是:

generatedFunction("{key:value, key2:value2}");

其中该函数中的参数是实际的 json 字符串。

在 php 中返回它会是这样的:

$callback = $_GET['callback'];
print($callback."(".json_encode($theobject).");");

关于ajax - jQuery、JSON 和 Apache 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com