我在这里使用$ .ajax()无法得到任何结果,为什么?

时间:2013-08-06 08:30:06

标签: jquery ajax glassfish

使用在端口8080上运行的 GlassFish 服务器,我可以通过我的网络浏览器访问http://localhost:8080/ws/

但无法使用jQuery$.ajax函数获取网页:

$.ajax({
    url: "http://localhost:8080/ws/",
    type: "GET",
    success: function() {alert("good");},
    error: function() {alert("error");}
});

每次都会显示一个带有“错误”的消息框。

以下是我使用firebug捕获的内容:

enter image description here

但响应标签没有显示任何内容:

enter image description here

有人能给我任何关于如何调试这个的建议吗?

注意:

  1. 我尝试使用error: function(request, status, error),但没有任何有用的内容。
  2. 使用Wireshark捕获环回HTTP数据包,我可以看到所有响应都在那里,但如上所示,firebug没有显示。

1 个答案:

答案 0 :(得分:2)

您已经说过运行jQuery代码的页面来自localhost:80,这意味着您正在遇到Same Origin Policy,这可以防止跨源的ajax调用。端口80和端口8080是SOP的不同来源。

为了完整起见,这里列出了两个来源必须相同的内容:

  • 协议(所以,file:http:https:等等。)
  • 端口
  • 服务器名称(例如localhostexample.comsub.example.com等。)

原点与文档(包含脚本标记的HTML文件)匹配,而不是脚本文件本身的位置。