我正在使用Java Restfull Web服务,该服务在postgres SQL中转储数据。
Java WebService函数完美运行。功能如下
@Path("/db")
public class DBOperaions {
@POST
@Path("/insert")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public String InsertDBData(@PathParam("hname") String hname,
@PathParam("hdates") String hdates,
@PathParam("hremark") String hremark,
@PathParam("isDelete") boolean isDelete,
@PathParam("created_date") String created_date,
@PathParam("updated_date") String updated_date) {
//Data Dumping Code
}
}
现在我正在尝试从Jquery Ajax访问此功能,如下所示
var obj = { hname: $("#txtRuleName").val(), hdates: $("#txtRuleDates").val(), hremark: $("#txtRuleRemark").val(), isDelete: false, created_date: 'CURRENT_TIMESTAMP', updated_date: 'CURRENT_TIMESTAMP' };
$.ajax({
type: "POST",
contentType: "application/json",
dataType: "json",
xhrFields: {
withCredentials: true
},
url: "http://localhost:8015/PostGresTestDB/rest/db/insert",
data: JSON.stringify(obj),
success: function (data, textStatus, jqXHR) {
alert('Data Inserted successfully...');
},
error: function (jqXHR, textStatus, errorThrown) {
alert('generateReportFromMR:Error in processing!');
//alert(jqXHR);
}
});
Webservice使用http://localhost:8015/PostGresTestDB/rest/db/insert在tomcat服务器上运行
和网页在http://localhost:42229/index.html上运行
我收到以下错误
XMLHttpRequest无法加载http://localhost:8015/PostGresTestDB/rest/db/insert。所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问源'http://localhost:49927'。
我尝试了CORS,但没有成功。
谁能告诉我我到底想做什么?
最佳答案
您可以尝试使用“ jsonp”作为请求的数据类型。通过使用它,您需要在javascript中指定一个回调函数,其中将包含解析json响应的实现。 $ .ajax函数的'jsonpCallback'选项中设置的值必须与将在JavaScript中实现的单独的回调函数同名。无需在$ .ajax的'success'属性中编写用于解析的代码,而是在回调函数中执行此操作。您还需要在Java源代码中修改数据转储代码,方法是在实际编写响应之前,首先用与您在“ jsonpCallback”中指定的回调函数同名的字符串包装JSON响应。
关于java - XMLHttpRequest错误所请求的资源上不存在“Access-Control-Allow-Origin” header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28335071/