【问题标题】:I cannot get any reult using $.ajax() here, why?我在这里使用 $.ajax() 无法得到任何结果,为什么?
【发布时间】:2013-08-07 04:00:15
【问题描述】:

使用运行在端口 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 捕获的:

但是响应标签什么也没显示:

谁能给我任何关于如何调试的建议?

注意:

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

【问题讨论】:

  • 网站是否也在 localhost:8080 执行请求?
  • 你想用你的源代码实现什么?通常使用 Ajax 发送数据。我看不到。
  • 不,该站点是 localhost:80,@Juhana
  • 是的,我使用那个 ajax 代码来发送数据,但是它不起作用。因此,我尝试将其简化为最少的代码集,以查看问题所在。 @记者

标签: jquery ajax glassfish


【解决方案1】:

您说您运行 jQuery 代码的页面来自 "localhost:80",这意味着您正在运行到 Same Origin Policy,这可以防止交叉起源 ajax 调用。就 SOP 而言,端口 80 和端口 8080 是不同的来源。

为了完整起见,这里列出了两个来源必须相同才能匹配:

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

来源与文档(包含脚本标签的HTML文件)匹配,而不是脚本文件本身的位置。

【讨论】:

  • 那为什么我们可以使用 Javascript 访问 Google 提供的 RESTful api?
  • @UniMouS:如果您通过 ajax 进行操作,Google 的服务器必须使用 CORS(并且您的浏览器必须支持它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2021-11-08
  • 2016-11-22
  • 2015-10-25
  • 1970-01-01
相关资源
最近更新 更多