使用ajax将参数传递给Controller

Posted

技术标签:

【中文标题】使用ajax将参数传递给Controller【英文标题】:Passing parameter to Controller by using ajax 【发布时间】:2018-09-01 16:34:49 【问题描述】:

使用 Spring boot、mysql、JPA 和 RESTFUL CRUD API。

我想要做的是将参数传递给控制器​​,以便参数进入表中。但是空值进入表格,我不知道哪一部分是问题所在。只有我可以确定的是控制器没有收到适当的值。

在下面,我发布了实体类(Status.java)、控制器(GuideController.java)和html表单(guide.html)。

Status.java

@Entity
@Table(name="tbl_status")
public class Status 

@Id
@GeneratedValue(strategy=GenerationType.AUTO)

private Integer id;

private String xml_to_json;


public String getXml_to_json() 
    return xml_to_json;


public void setXml_to_json(String xml_to_json) 
    this.xml_to_json = xml_to_json;

GuideController.java

    @Autowired
private StatusRepository statusRepository;

@GetMapping(path="/insert") // Map ONLY GET Requests
public @ResponseBody String addNewStatus (@RequestParam String xml_to_json
        , @RequestParam String json_to_xml) 
    // @ResponseBody means the returned String is the response, not a view name
    // @RequestParam means it is a parameter from the GET or POST request

    Status s = new Status();
    s.setXml_to_json(xml_to_json);
    //s.setJson_to_xml(json_to_xml);
    statusRepository.save(s);
    return "Saved";


@GetMapping(path="/all")
public @ResponseBody Iterable<Status> getAllUsers() 
    // This returns a JSON or XML with the users
    return statusRepository.findAll();

guide.html

var xml2json = function(_data)
$.ajax(   
    type: "POST",   
    url: url + "xml2json",   
    data: _data,
    contentType : "application/xml",
    cache: false,
    success : function(data)    
        $("#output-xml-to-json").html(JSON.stringify(data,null,4));
        $.ajax(
            type:"POST",
            url: url + "insert",
            data: xml_to_json:"success",
            contentType: "text"
        )
    ,
    error : function()
        $("#output-xml-to-json").html("xml2json error");
        $.ajax(
            type:"POST",
            url: url + "insert",
            data: xml_to_json:"error",
            contentType: "text"
        )
    
);

【问题讨论】:

你正在将 'xml_to_json' 这个参数传递给控制器​​,在控制器中打印它来验证它的值是 'success' 还是 null 【参考方案1】:

请求映射是GET:

@GetMapping(path="/insert") // Map ONLY GET Requests
public @ResponseBody String addNewStatus (@RequestParam String xml_to_json
    , @RequestParam String json_to_xml) ...

AJAX 请求是带有 json 数据的 POST。 AJAX 请求应该是 get 并且 xml_to_json 必须在查询字符串中传递。

【讨论】:

以上是关于使用ajax将参数传递给Controller的主要内容,如果未能解决你的问题,请参考以下文章

使用AJAX将参数传递给PHP函数

如何将附加参数传递给 jQuery DataTable ajax 调用?

DataTables 警告:表 id=users - Ajax 错误。使用 jquery 将参数传递给它时

将 Id 参数传递给 ajax 函数

使用 jquery ajax 将参数传递给控制器

在 ajax 调用中使用 datatable url 属性将参数传递给服务器