gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:03:26 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com