jquery - 通过 jquery ajax 和 javax.ws Web 服务发送 json 作为值失败

标签 jquery ajax web-services jersey jax-rs

我在通过 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/

相关文章:

javascript - 使用ajax和php强制下载文件

java - InputStream 在 MessageBodyReader Jersey 中提供空数据

.NET 使用外部应用程序实现客户端/服务器排队模型的最佳方法?

php - 使用 php 进行多选选项 onChange

javascript - 在 jquery 中对另一个 each() 的结果运行一个 each()

javascript - 如何排列 jQuery 延迟对象?

javascript - Bootstrap typeahead(自动完成)ajax返回多个值

javascript - 在 javascript 中加载 php 文件(AJAX 或其他)

ios - 在 Objective C 中形成 JSON 数据请求

javascript - 运行函数直到变量达到特定值