Javascript 无法通过AJAX调用调用REST Jersey资源
我正在尝试使用Jersey创建RESTful资源。我想要的是,点击一个链接,BookResource应该被访问并显示数据库中的书籍列表。现在我想要的是JavaScript中的函数抛出一个警报,表明它确实进行了ajax调用。然而,它进入request.fail循环,不做任何事情Javascript 无法通过AJAX调用调用REST Jersey资源,javascript,jquery,ajax,jsp,jersey,Javascript,Jquery,Ajax,Jsp,Jersey,我正在尝试使用Jersey创建RESTful资源。我想要的是,点击一个链接,BookResource应该被访问并显示数据库中的书籍列表。现在我想要的是JavaScript中的函数抛出一个警报,表明它确实进行了ajax调用。然而,它进入request.fail循环,不做任何事情 BookResource.java import com.helper.BooksHelper; import com.servlets.Book; @Path("/books") public class Book
BookResource.java
import com.helper.BooksHelper;
import com.servlets.Book;
@Path("/books")
public class BookResource {
@GET
@Path("/allBooks")
@Produces(MediaType.APPLICATION_JSON)
public Response getAllBooks() {
BooksHelper bookHelper = new BooksHelper();
ArrayList<Book> listOfBooks = bookHelper.getListOfBooks();
ResponseBuilder responseBuilder = Response.status(Status.OK);
responseBuilder.entity(listOfBooks);
Response response = responseBuilder.build();
return response;
}
web.xml
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.-------(hidden).library</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</web-app>
Jersey Web应用程序
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
组织。------(隐藏)。图书馆
1.
Jersey Web应用程序
/webapi/*
我希望index.jsp本身发出警报,确认ajax调用成功。我启动应用程序的url是
然后在成功登录后,url更改为,我在这里有一个链接,图书馆中的图书列表单击此处,但单击它时除了警告“Inside js”和“Ajax call Make”外,什么都没有发生。我在控制台开发人员工具中发现一个错误,找不到“”。我做错了什么。我在网上列举了许多例子,他们就是这样做的。url不正确吗?任何帮助都将不胜感激。多谢各位
您是否尝试在浏览器中打开服务url?在我看来,你似乎遗漏了地址的某些部分,但我无法从你发布的信息中看出遗漏的部分是什么。唯一的提示是,“library”可能不是托管服务的web应用程序的名称。或者,您可以尝试在请求参数中指定“application/json”而不是“json”。还可以设置内容类型contentType:“application/json”@francescoforesti我尝试直接在浏览器中打开它。将获得一个普通页面,其中包含来自Ajax调用失败循环的错误警报。我也将json更改为application/json,但没有更改。我附上我的目录结构截图。如果您想查看任何代码,请务必告诉我。@AllahbakshAsadullah我设置了contentType:'application/json',但没有任何影响。请提出一些建议。这件事我已经坚持了两天了。谢谢。我可以调试资源吗。就发送和接收的标题而言是什么意思?
function libBooks(){
alert("Inside js");
//The above alert is displayed
var requestData = {
"dataType": "json",
"type": "GET",
"url": "http://localhost:8080/library/webapi/books/allBooks"
};
var request = $.ajax(requestData);
alert("Ajax call made");
//The above alert is displayed
request.success(function(data) {
alert("Inside done function");
//The above alert is not displayed
var dataReceived =data.listOfBooks;
var numOfItems = dataReceived.length;
alert(numOfItems);
});
request.fail(function(jqXHR, status, errorMessage) {
if((errorMessage = $.trim(errorMessage)) === "") {
alert("An unspecified error occurred. Check the server error log for details.");
}
else {
alert("An error occurred: " + errorMessage);
//The above alert is displayed
}
});
}
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.-------(hidden).library</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</web-app>