请注意。 (我目前正在使用Spring Framework(MVC))
从Controller发送到ajax的值是......
如上图所示。
我正在遍历forEach语句中的数组中的值,我想将值放入标记中。
所以我写了代码。
$(function()
{
$('#doctorSelect').change(function()
{
$('#selectGugan').show();
var doctor_idx = $(this).val();
$.ajax
({
type: 'POST',
url: 'selectDoctor.do',
data: {"d_idx":doctor_idx},
dataType: 'JSON',
success: function(sectionDate)
{
console.log(sectionDate);
var html = "<option value=''>Choice Doctor</option>";
var responseData = [];
responseData.push(sectionDate);
console.log(responseData);
$.each(responseData, function(key, value)
{
console.log("forEach statement in responseData :" + responseData);
//html+="<option value="+new_date+">"+new_date+"</option>";
});
$('#doctorSelect_2').html(html);
},
error: function(sectionDate)
{
console.log("data : " + sectionDate);
}
});
});
});
但出乎意料的是,我没有得到钥匙,价值。
事实上,我不知道jquery forEach语句。
如何设置键值?
我只是想带上这些价值并像这样表达。
<option value="ri_idx">ri_startDate ~ ri_endDate</option>
如何设置键,值或如何使用jquery forEach语句?
我是初学者。如果你能给我一个例子,我将不胜感激。
答案 0 :(得分:1)
在你的情况下,我不确定你为什么会这样做:
responseData.push(sectionData);
因为这样你不会得到一个对象数组,因为我相信你认为你会这样,你只需要一个包含1个元素的数组,这是很多对象,所以对该数组执行forEach将无济于事,因为该值将是multiobject元素(不是您可以访问属性的单个对象)。
您要做的是迭代原始对象,因此您的代码应该是这样的:
$.each(sectionDate, function(key, value){
// here you can access all the properties just by typing either value.propertyName or value["propertyName"]
// example: value.ri_idx; value.ri_startDate; value.ri_endDate;
});
希望这有帮助!
答案 1 :(得分:0)
在jQuery forEach中像这样工作
$.each( obj, function( key, value ) {
alert( key + ": " + value );
});
如果您使用的是Array for循环,则key
的值为array index
和value
,如果您使用的是javascript object
,则object key
为key
对于特定的value
,object value
为key
。
您可以在jQuery documentation了解更多信息。
答案 2 :(得分:0)
只需在对象中使用属性名称。 Check if this helps
$(document).ready(function() {
var responseData = [
{startdate: '2017-12-21', enddate: '2017-12-22', idx: '1'},
{startdate: '2017-11-21', enddate: '2017-11-22', idx: '1'},
{startdate: '2017-10-21', enddate: '2017-10-22', idx: '1'}
];
var html = '';
$.each(responseData, function(key, value) {
html += "<option value=" + value.startdate + ">" + value.startdate + "</option>";
});
$('#doctorSelect').html(html);
});