Jquery 我需要以json字符串的形式从html表单发送一个对象,但我有一个字符串

Jquery 我需要以json字符串的形式从html表单发送一个对象,但我有一个字符串,jquery,json,ajax,rest,spring-mvc,Jquery,Json,Ajax,Rest,Spring Mvc,我尝试向我的rest控制器发送一个ajax请求来编辑一个对象用户。其中一个字段是角色列表。每个角色都有Id和名称,但当我填写表单时,我将此选项作为其名称的文本放在选择字段中。以下是片段: $.ajax({ url: '/api/roles/', method: 'get', dataType: 'json',

我尝试向我的rest控制器发送一个ajax请求来编辑一个对象用户。其中一个字段是角色列表。每个角色都有Id和名称,但当我填写表单时,我将此选项作为其名称的文本放在选择字段中。以下是片段:

 $.ajax({
                        url: '/api/roles/',
                        method: 'get',
                        dataType: 'json',
                        contentType: "application/json",
                        success: function (result) {
                            $('#roles').empty();
                            $.each(result, function (k, v) {
                                var option = new Option(v.name, v.name);
                                $("#roles").append(option);
                            });

                        }
                    })
当我发送表单值时,角色列表作为字符串列表,因此rest控制器生成一个没有id字段的对象。最好的解决方法是什么?我这样发送:

 $.ajax({
            url: '/api/users',
            async: true,
            // dataType: 'json',
            contentType: "application/json",
            type: "PUT",
             data:
             JSON.stringify(   {
                id : jQuery('#id').val(),
                username: jQuery('#username').val(),
                password: jQuery('#password').val(),
                roles : jQuery('#roles').val()

            })

        })

用ajax调用填充选择列表

var option = new Option(v.name, v.name);
$("#roles").append(option);
在HTML中创建选项元素,如

<option value="name">name</option>
你会得到

<option value="id">name</option>
名称

这样,在调用jQuery(“#roles”).val()时,您将获得/api/users脚本所选角色的id。在这种情况下,结果对象中的字段名将获得id值。出于某种原因,这里只能设置名称字段。这有点奇怪。但这只能是新期权认购的结果。因此,我建议使用另一种方法将元素添加到选择列表中,而不要使用Option对象。类似于
$('#roles').append($(“”).attr(“value”,role.id).text(role.name))应该可以做到这一点。
<option value="id">name</option>