【问题标题】:Spring REST webservice with JSON param to be consumed using Jquery AJAX使用 Jquery AJAX 使用带有 JSON 参数的 Spring REST Web 服务
【发布时间】:2016-02-03 09:15:22
【问题描述】:

我正在尝试学习 Spring Framework,以便为我未来的项目创建 RESTful Web 服务。到目前为止,我已经尝试使用 GET 并使用简单的 Ajax 请求毫无问题地使用它。我也尝试过使用查询字符串来输入参数。

到目前为止,我正在尝试创建一个接收 POST 请求的端点。我已经研究了几天,但无济于事(对于像我这样的初学者来说,有些 tuts 太复杂了)。

这是我的简单代码:

Java 春天

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String testString(String jsonString)
{
        System.out.println(jsonString);
        return jsonString;
}

阿贾克斯

  var data = {"name":"John Doe"}
  $.ajax({
              url: "http://localhost:8080/springrestexample/test",
              method:"POST",
              data:data,
              dataType:'text',
              success: function( data ) {
                 alert(data);                                 
              },
              error: function( xhr, status, errorThrown ) {
                  alert("Error:" + errorThrown + status);
              }
      });

我已尝试调试 tomcat,但似乎我没有在 testString 上传递任何值。我需要在我的 java 代码上添加一些东西吗?

【问题讨论】:

  • 有什么问题? jsonString 是空的吗?看看@RequestBody
  • data:{jsonString:data}, 更改为这个也设置了一个有效的contentType:'application/json'
  • 是的,jsonString 始终为空。我也试过把名字改成 jsonString 还是没有正确响应

标签: java jquery json ajax spring


【解决方案1】:

@RequestMapping 仅将您的方法映射到某个 url。 访问数据需要@RequestParam注解才能获取数据,例如:

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String testString(@RequestParam("name") String jsonString)
{
    System.out.println(jsonString);
    return jsonString;
}

查看this手册了解更多示例。

【讨论】:

  • 所以我可以在没有查询字符串的情况下使用@RequestParam?
  • @RequestParam 存储请求中的变量。 GETPOST。你,也可以使用@PathVariable。请参阅手册。
【解决方案2】:

由于您是从 ajax 请求将数据传递到正文中,因此您需要从

@RequestBody

像这样在参数前加上这个注解;

public String testString(@RequestBody String jsonString) {
    System.out.println(jsonString);
    return jsonString;
}

你已经完成了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多