jquery - AJAX POST/GET 请求抛出空错误,但 Glassfish 服务器似乎响应正确

标签 jquery ajax post get jax-rs

我使用 JAX-RS 在 Glassfish 服务器上设置了一些非常简单的 Web 服务。最初一切似乎都工作正常 - 我会通过浏览器看到预期的响应(例如返回的 HTML)。代码如下:

@GET
@Produces("text/HTML")
public String getHtml() {
    return "<html lang=\"en\"><body><h1>GET RESPONSE</body></h1></html>";
}

@POST
@Produces("text/HTML")
@Consumes("text/plain")
public String postText(String content)
{        
    return "<html lang=\"en\"><body><h1>POST RESPONSE: " + content + "</body></h1></html>";
}

正如您所看到的,这非常基本。

当我尝试使用 Javascript 对这些 Web 服务进行 AJAX 调用时,问题就开始了。 POST 和 GET 调用始终失败,没有有用的错误信息。我在 Firefox 的 Firebug 插件中检查了响应结果,响应代码显示 200 ok,尽管 Firebug 在 HTML 面板中没有显示任何内容,这可能表明存在问题。这是 JavaScript:

$.ajax({
    type: "POST",
    url: "http://localhost:8080/TestEngine/API/",
    data: "string",
    dataType: "html",
    success: function(data, textStatus, jqXHR) {
        alert("success");
    },
    error: function(jqXHR, textStatus, errorThrown) {                             
        alert("error:" + errorThrown );
    },
    contentType: "text/plain"
});

我尝试过对数据、数据类型、内容类型等进行各种修改和排除,但最终总是抛出错误回调。我还尝试修改 GET 和 POST 函数的返回值,包括尝试使用 JAX-RS Responsebuilder(尽管我不熟悉它的用法,所以可能做得不正确)。我仍然以错误回调结束,错误参数中没有明显有用的信息(大多数内容只是返回未定义或空)。

在这一点上,我真的很感激一些关于我做错了什么的建议。谢谢!

最佳答案

我解决了这个问题 - 我必须了解 CORS。最终的问题是 header 中的原点为空,因为我在本地工作。将以下代码添加到我的 POST 响应函数中解决了该问题(尽管我需要在生产服务器上提供更强大的功能):

ResponseBuilder builder = Response.ok("<html lang=\"en\"><body><h1>POST RESPONSE</h1></body></html>");
builder.header("Access-Control-Allow-Origin", "*");
return builder.build();

关于jquery - AJAX POST/GET 请求抛出空错误,但 Glassfish 服务器似乎响应正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950091/

相关文章:

AJAX 每个表单元素?

javascript - Firefox 49.0.2 附加组件的 XMLHttpRequest Status 0

php - CodeIgniter 中的链接、 Controller

javascript - jQuery 查找 TR->TH 值

jquery - 使用 Jquery ajax 填充 select 的最*有效*方法

javascript - 使用 jQuery 动态添加 'divs'

swift - 在 Swift 中将 Bearer Token 添加到 header 时出现问题(HTTP POST 调用)

jquery - 使用 jQuery 拖动 anchor : IE not updating cursor

java - 如何使用 restTemplate Spring-mvc 发送 Multipart 表单数据

c# - MVC 3 文件上传验证错误触发