我想问一下对val()的ajax响应。我有JSON这样的数据]
{"details":{"id": 10,"name": John Doe,"hobbies": [{"id": 1,"name": "Football"},{"id": 2,"name": "Badminton"},{"id": 3,"name": "Running"}],"dob": 1989-12-31}}
我的Ajax:
$.ajax({
type: 'POST',
url: "{{ route('askdata') }}",
dataType: 'json',
data: {
'id': $('#member_id').val(),
},
success: function(data) {
$('#id').val(data.details.id);
$('#name').val(data.details.name);
$('#dob').val(data.details.dob);
$('#hobbies').val(JSON.stringify(data.details.hobbies, ['name']));
}
});
上面有ajax,我在这样的爱好输入中获得了价值:
[{"name":"Football"},{"name":"Badminton"},{"name":"Running"}]
如何仅获取橄榄球,羽毛球,跑步这样的值?]
谢谢
您当前的逻辑是从hobbies
数组构建JSON字符串。要获得所需的输出,可以使用map()
构建一个爱好名称数组,然后可以将join()
一起形成一个字符串:
let data = {"details":{"id": 10,"name": 'John Doe',"hobbies": [{"id": 1,"name": "Football"},{"id": 2,"name": "Badminton"},{"id": 3,"name": "Running"}],"dob": '1989-12-31'}}
$('#hobbies').val(data.details.hobbies.map(o => o.name).join(', '));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="hobbies" />
[{"name":"Football"},{"name":"Badminton"},{"name":"Running"}]
在对象数组中,您可以按array[0]["name"]
来访问