Jquery 我需要以json字符串的形式从html表单发送一个对象,但我有一个字符串
我尝试向我的rest控制器发送一个ajax请求来编辑一个对象用户。其中一个字段是角色列表。每个角色都有Id和名称,但当我填写表单时,我将此选项作为其名称的文本放在选择字段中。以下是片段: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',
$.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>