尝试从localhost上的java服务器获取数据时,Jquery getJSON()不起作用

时间:2010-05-24 08:58:50

标签: jquery ajax json jsonp httpserver

昨天整整一天我一直试图解决这个问题,但事实证明这对我来说非常具有挑战性。

我正在尝试使用这个JS从我编写的java应用程序中获取信息。

$(document).ready(function() {
 $.getJSON('http://localhost/custest?callback=?', function(json) {
   alert('OK');
     $('.result').html(json.description);
  });     
 });

Java应用程序使用httpServer,非常基本。

当我访问“http://localhost/custest?callback=”页面时使用Firefox,浏览器显示服务器正在向我发送json数据并询问打开它的内容,但是当我使用上面的JS从网页上尝试它时,它无效。 getJSON调用不成功,警报(“ok”)根本不会弹出。

如果它取代“http://localhost/custest?callback=?”在JS中有“http://twitter.com/users/usejquery.json?callback=?”一切正常。

有趣的是,如果我从我的java服务器发送格式错误的JSON,Firebug会发出错误并告诉我JSON中缺少什么,这意味着浏览器正在接收JSON数据,但是当我发送一个正确的JSON字符串时没有任何反应,没有错误,甚至没有警报()打开。

我正在添加标题,以防您认为这些标题可能相关。

http://localhost/custest?callback=jsonp1274691110349

GET /custest?callback=jsonp1274691110349 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您是否返回JSON而不是JSONP?尝试省略'callback =?'部分,看看是否有帮助。 jQuery文档包含有关JSON vs JSONP的其他信息。 编辑:文档的链接也应该是有价值的:http://api.jquery.com/jQuery.getJSON/

答案 1 :(得分:3)

您发送AJAX请求的页面是否与Java应用程序托管在同一服务器上?如果不是这种情况,Java应用程序会考虑callback=?参数吗?这适用于Twitter的原因是它发送JSONP,即您的服务器需要发送如下数据:

nameofcallback({ name: 'Smith' });

如果两者都托管在same domain上,则您不需要callback参数。