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

Jquery AJAX POST/GET请求抛出空错误,但Glassfish服务器似乎响应正确,jquery,ajax,post,get,jax-rs,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>

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


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

我解决了这个问题——我必须了解CORS。最终的问题是,由于我在本地工作,所以标题中的原点为null。将以下代码添加到我的POST响应函数中解决了这个问题(尽管我需要在生产服务器上使用更健壮的代码):

ResponseBuilder=Response.ok(“POST-Response”);
builder.header(“访问控制允许原点”、“*”);
返回builder.build();

我解决了这个问题-我必须了解CORS。最终的问题是,由于我在本地工作,所以标题中的原点为null。将以下代码添加到我的POST响应函数中解决了这个问题(尽管我需要在生产服务器上使用更健壮的代码):

ResponseBuilder=Response.ok(“POST-Response”);
builder.header(“访问控制允许原点”、“*”);
返回builder.build();

嘿,时间,你能发布整个代码块吗?是的,听起来像是一个跨域策略问题。您必须使用请求头并将“访问控制允许源”设置为“*”。请注意从AJAX发送此消息,并将服务器设置为也从任何来源接收。嘿,时间,你会发布整个代码块它是如何工作的吗?是的,听起来像是一个跨域策略问题。您必须使用请求头并将“访问控制允许源”设置为“*”。注意从AJAX发送此消息,并将服务器设置为从任何来源接收。
$.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"
});
ResponseBuilder builder = Response.ok("<html lang=\"en\"><body><h1>POST RESPONSE</h1></body></html>");
builder.header("Access-Control-Allow-Origin", "*");
return builder.build();