【发布时间】:2010-03-08 19:40:37
【问题描述】:
我有一个 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 标头:
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
每种情况下的标头都是相同的:常规 HTTP 请求或 AJAX。但是我收到了带有 AJAX 的空内容,以及带有浏览器请求的普通 JSON。我使用 Firebug 进行测试,使用 PHP5 形成 JSON。
有人有什么想法吗? 谢谢!
【问题讨论】:
-
当您说数据为空时:您是否使用 Firebug 控制台检查过 HTTP 请求返回的内容?
-
返回的数据长度只有2个字节。所以我猜像 {} 或 [] 之类的东西,可能评估为假。你确定你的脚本返回正确的数据吗?
-
不重要:2 字节或更多。你是对的,它是 [] 字符。不要紧。当我说“null”时,我的意思是警报显示“null”和 Firebug 控制台返回的空字符串。