我在通过 jquery ajax 和 javax.ws 作为我的 Web 服务发送 json 作为值时遇到问题。 这是我的 ajax 脚本
var _data = JSON.stringify(xdata.children[prop]);
var formData = new FormData();
formData.append('_data', _data);
$.ajax({
url: 'http://localhost:8080/ribwebservice/rest/service/save',
type: 'POST',
dataType: 'json',
contentType: 'text/plain',
data: {'json' : _data}
}).done(function(data){
alert('Page Saved');
});
这是我的网络服务代码
@Path("/service")
公共(public)类RibWebService {
@POST
@Path("save")
@Consumes({"application/xml", "application/json", "text/plain", "text/html"})
@Produces({"application/xml", "application/json", "text/plain", "text/html"})
public Response savePage(@QueryParam("json") String json){
String output = "success";
PageSave page = new PageSave();
page.savePage(json);
return Response.status(200).entity(output).build();
}
@POST
@Path("load")
public Response loadPage(){
PageLoad page = new PageLoad();
String output = page.getRibPageJsonList();
return Response.status(200).entity(output).type(MediaType.APPLICATION_JSON).build();
}
}
我尝试将数据键从“json”更改为 json,反之亦然,但仍然出现此错误。 500(内部服务器错误)
但是当我通过 postman 使用这些配置调用我的网络服务时: 类型:帖子 url 参数 => 键:json,值 = my_ajax_code Content-Type :text/html(也尝试设置text/plain)
我的 REST 服务工作正常,没有留下 500 错误代码。
那么这里到底发生了什么?
最佳答案
反馈后更新:
您的问题出在服务器端。
不幸的是,我不了解那里使用的语言,但据我所知,您正在期待一个名为 json 的字符串(直到这里一切都是正确的)。
主要问题是您的 json 对象是 strigify,因此在解析它之前无法使用它。
当它到达服务器端时,代码无法作为 json 对象访问,但它是一个普通字符串。通常这种问题可以通过一次测试一部分来解决
1) 使用调试器调试发送到服务器的请求; 2)发送一个硬编码的字符串(以防万一_data对象中有一些特殊字符) 3)服务器端,把所有东西都拿出来,只返回数据本身,看到客户端成功触发成功回调。
通过执行此步骤,您将了解实际问题所在。
关于jquery - 通过 jquery ajax 和 javax.ws Web 服务发送 json 作为值失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319542/