当前位置: 首页 > 面试题库 >

jQuery,JSON和Apache问题

杜阳泽
2023-03-14
问题内容

我有一个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。

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


问题答案:

我非常确定,要进行像这样的跨域调用,您必须有一个回调,这是执行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).");");


 类似资料:
  • 问题内容: 我正在尝试apache- camel,我已经建立了一条基本路由,该路由通过http4组件调用http服务,通过unmarshal()。json(JsonLibrary.Jackson)转换结果,然后打印出部分响应在bean组件中。 我遇到的问题是,当它到达json unmarhsaller时,它会在运行时爆炸: 没有类型转换器可用于从类型:java.util.HashMap转换为所需的

  • 问题内容: 我有两个域。我正在尝试从一个域通过另一个域上的页面访问JSON对象。我已经阅读了有关此问题的所有内容,但仍然无法解决。 提供JSON的域具有以下设置: 从我的其他域,我打电话给以下人员: 我知道’auth’已正确初始化(记录并检查)。但是,这不起作用。在Firefox的控制台中,我收到请求URL:… 如果我摆脱了这一部分,我会看到以下内容 但是,服务JSON的域也可以服务JSONP。我

  • 我只需要阅读下面的json文件。从该文件中读取完整的,然后将其流式传输。 上面的代码不是在读取json文件,而是在打印 你能给我提供样品参考吗?

  • 问题内容: 我正在使用jQuery 1.4.2创建ajax应用,并且尝试使用get(),post()和ajax()方法本身。我的php服务返回: 在我的成功回调中,我尝试以json.status和json [0] [0]的身份访问,但它始终返回“ undefined”。我究竟做错了什么? 我已经搜索了好几天了。我该如何访问返回的数据?任何帮助,将不胜感激。 问题答案: 要访问该状态值,您需要: 这

  • 问题内容: 我有一个期望接收json的Web服务,如下所示: 我在jquery中的ajax调用: 有什么方法可以检查数据的发送格式?据说我没有将正确的JSON发送到服务器(这是验证的第一步)。 我的jquery代码是否发送有效的JSON或我错过了什么? 问题答案: 您实际上并不是在发送JSON。您正在将对象传递为,但是您需要对对象进行字符串化,然后传递字符串。 您只告诉jQuery您希望它解析返回