昨天整整一天我一直试图解决这个问题,但事实证明这对我来说非常具有挑战性。
我正在尝试使用这个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
感谢您的帮助。
答案 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
参数。