【问题标题】:How to use array string in jQuery ajax call?如何在 jQuery ajax 调用中使用数组字符串?
【发布时间】:2019-05-12 18:25:06
【问题描述】:

通过使用 jQuery,我试图将我的字符串数组保存在后端,下面是我的方法。

1.使用jQuery ajax发送数组。

var tagTexts = $(ul li.select2-selection__choice")
                   .toArray()
                   .map(function(i){
                       return i.innerText;
                   });
tagTexts = tagTexts.join(',');
$.ajax({
    type: 'POST' ,
    url: '/tag/tagList',
    dataType: 'json',
    data: {
        tagTexts: tagTexts
    },
    error: function(err) {
       console.log(err);
    },
    success: function(response) {
        //Process Response
    }

});

2.后端检索如下:

@ResponseBody
@RequestMapping(value = "/tag/tagList", method = RequestMethod.POST)
public String saveTagList(HttpServletRequest request,
                                  @RequestParam(value = "tagTexts", required = false)List<String>tagTexts) {

     System.out.println(tagTexts);
     String response = tagService.saveTags(tagTexts);
     return response;
}

a) 使用数组连接方法

以下是捕获的字符串数组:

["Drone", "Richard Feynman, PHD", "Yatch"]

使用数组连接方法后,更改如下:

Drone,Richard Feynman, PHD,Yatch 

在 java 执行(后端)中显示如下:

[Drone, Richard Feynman, PHD, Yatch]

b) 使用 JSON.stringify 方法

使用 JSON.stringify 方法后,捕获的数组显示如下:

["Drone", "Richard feynman, PHD", "Yatch"]

这在 js 级别看起来不错,但这整行被认为是一个字符串,它在后端显示如下:

[["Drone", "Richard feynman, PHD", "Yatch"]].

我希望我的代码能够按如下方式工作:

  1. 捕获的原始数据元素中的逗号字符不应拆分。
  2. 整个数组不应在后端显示为字符串。

有没有更好的方法来实现这一点?

【问题讨论】:

    标签: javascript java jquery arrays spring


    【解决方案1】:

    您可以像这样创建自定义请求对象:

    public class TagListRequest {
        private List<String> tagTexts;
        // getter and setter
    }
    

    您现在可以在请求映射中将其与 @RequestBody 一起使用:

    @ResponseBody
    @RequestMapping(value = "/tag/tagList", method = RequestMethod.POST)
    public String saveTagList(@RequestBody TagListRequest request) {
        System.out.println(request.getTagTexts());
        String response = tagService.saveTags(request.getTagTexts());
        return response;
    }
    

    Spring 在内部使用 Jackson 将请求的 JSON 正文映射到 TagListRequest 对象。

    使用此解决方案,您无需使用分隔符手动解析数据。

    【讨论】:

      【解决方案2】:

      您的带有 JSON.stringify 的 javascript 是正确的解决方案。您只需要在 java 后端解析 JSON。例如,

      import org.json.simple.JSONObject;
      JSONParser parser = new JSONParser();
      JSONObject json = (JSONObject) parser.parse(tagTexts);
      

      请参阅How to convert jsonString to JSONObject in Java 了解如何在 java 中解析 JSON 的替代方法。

      【讨论】:

        猜你喜欢
        • 2012-10-08
        • 2011-04-22
        • 2021-08-16
        • 2019-03-06
        • 2020-03-14
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多