我正在调用一个使用hibernate在数据库中插入一些数据的Web服务,我只是在html页面中放置一个按钮
<button type="button" onclick="testMe()">Click Me!</button>
其中testMe()方法是调用数据库的方法。 这是功能:
function testMe() {
$.ajax({
url: "http://localhost:8084/RESTfulExample/rest/message/insertdb",
type: "post"
});
}
这是在数据库中插入数据的Web服务
@POST
@Path("/insertdb")
public void printDB() {
DB db = new DB();
db.insert();
System.out.println("Done!!!");
}
直到现在一切正常,Web服务成功地在数据库中插入数据,但如果我想用这样的参数调用Web服务怎么办
@POST
@Path("/insertdb")
public void printDB(String u) {
System.out.println("inside web service");
}
并确保像这样修改html页面
function testMe() {
var params = {"firstName": "test", "lastName": "test2"};
var jsonData = JSON.stringify(params);
$.ajax({
url: "http://localhost:8084/RESTfulExample/rest/message/insertdb",
type: "post",
dataType: "json",
data: jsonData
});
}
当我尝试这个并调用Web服务时,不会打印应该在printDB函数中打印的行。 调用带参数的Web服务时,我的代码有什么问题?
答案 0 :(得分:0)
我可以在您的WebService printDB()
中看到您正在设置@GET
http方法: -
@GET
@Path("/insertdb")
public void printDB(String u) {
System.out.println("inside web service");
}
但在$.ajax
来电中,您发送了type: "post"
,所以您可以尝试使用您的网络服务printDB()
,从@GET
更改为@POST
。
答案 1 :(得分:0)
我认为问题在于您在服务器端使用@GET
在Ajax
方法中使用POST
方法进行注释。不同之处在于,POST
数据在请求正文中发送,而不是作为URL参数发送。
因此,请考虑更改/实现@POST
带注释的方法。