java 使用jquery ajax调用rest webservice?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29599968/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Calling rest webservice using jquery ajax?
提问by Imran khan
I tried couple of tutorial to call rest web-service using jQuery ajax call, but I am not getting the response.
我尝试了几个教程来使用 jQuery ajax 调用来调用 rest web 服务,但我没有得到响应。
But When I directly hitting the url in browser I am getting the response ,but unable to get same json response using ajax call,always going in the error block. (tomcat is running on port 8888)
但是当我直接在浏览器中点击 url 时,我得到了响应,但无法使用 ajax 调用获得相同的 json 响应,总是进入错误块。(tomcat 运行在 8888 端口)
http://localhost:8888/WebService_2/rest/webservice
http://localhost:8888/WebService_2/rest/webservice
Index.jsp file.
索引.jsp 文件。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<body>
<table>
<tr>
<td><input type="button" value="submit" id="submit"> </td>
</tr>
</table>
</body>
<script type="text/javascript">
$(document).ready(function(){
$("#submit").click(function(){
$.ajax({
type: "GET",
dataType:"json",
contentType: "application/json; charset=utf-8",
url: "http://localhost:8888/WebService_2/rest/webservice",
success: function(data1) {
console.log("response:" + data1);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(' Error in processing!');
}
});
});
});
</script>
</html>
WebSerivce Class.
网络服务类。
package com.app.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/webservice")
public class WebSerivce {
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getResponse(){
return "Web Service Response Call " ;
}
}
web.xml
网页.xml
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.app.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
回答by Imran khan
Got the answer after some google... I have used the google jar for JSON conversion
在谷歌之后得到了答案......我已经使用谷歌 jar 进行 JSON 转换
Pom.xml
xml文件
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
WebService.class
WebService.class
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@Path("/webservice")
public class WebService {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Object getResponse(){
//firstName,LastName,Age,Id
Student std1 = new Student("ik","test",22,2);
Student std2 = new Student("John","Vector",23,3);
Student std3 = new Student("iks","Roy",25,4);
List<Student> stuList = new ArrayList<Student>();
stuList.add(std1);
stuList.add(std2);
stuList.add(std3);
Gson gson = new GsonBuilder().create();
return gson.toJson(stuList);
}
}
Index.jsp
索引.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<body>
<form method="get">
<table>
<tr>
<td><input type="button" value="submit" id="submit"> </td>
<div id="data"></div>
</tr>
</table>
</form>
</body>
<script type="text/javascript">
$(document).ready(function(){
var val = "";
$("#submit").click(function(event){
event.preventDefault();
$.ajax({
type: "GET",
dataType:"json",
url: "rest/webservice",
success: function(data) {
console.log("response:" + data);
$.each(data, function(j, pdata) {
val= val + "[ "+pdata.firstName +" " + pdata.lastName +"]";
});
$("#data").text(val);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(' Error in processing! '+textStatus);
}
});
});
});
</script>
</html>