我正在尝试将我从数据库中获取的字符串列表放入下拉菜单中。我尝试使用数组,但它显示[[对象对象,对象对象] ...]的错误。这是我的ajax方法
$(document).ready(function () {
Method(); });
function Method() {
ajReq.abort();
ajReq = $.ajax({
type: "POST",
url: "Services/Page.asmx/GetService",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (x) {
var opts = '';
$.each(x, function (i) {
opts += '<option>' + this + '</option>';
});
$('.dropdown-menu').html(opts);
}
});
}
这是我的下拉菜单:
<div class="fromDropdownMenu" style="display: inline-block;">
<div class="btn-group">
<button type="button" id="Button1" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span id="dropdown_title">Name:</span><span class="caret"></span>
</button>
<ul class="dropdown-menu">
</ul>
</div>
</div>
目前如果我在$ .each(x,function(i)和hoverover xi get [[object Object],[object,Object] ...]中放置一个断点。如果我然后点击+符号我得到我的来自数据库的数据。
但是当断点击中opts + =''+ this +'';如果我悬停我得到与[[对象],[对象,对象] ...]相同的消息,如果我然后点击+符号我得到的孩子无法评估。相同的消息显示。有人可以帮我吗?
这就是我的x:
- x {...} Object
- d [[object Object],[object Object],[object Object],[object Object]] Object, (Array)
- [0] {...} Object
+ __type "MakeBooking" String
MakeBookingID 0 Number
+ Name "Jhon" String
+ [1] {...} Object
+ [2] {...} Object
+ [3] {...} Object
+ arguments {...} Object, (Arguments)
opts "" String
这是onselect功能:
$('.dropdown-menu li').on('click', function () {
$('#dropdown_title').html($(this).find('a').html());
});
答案 0 :(得分:0)
看起来x
是一个对象,而不是一个数组,您要显示的数据位于x.d
内。此外,x.d
不是字符串数组,而是包含属性Name
的对象数组。
最后,.dropdown-menu
元素是<ul>
,因此,不要使用<option>
代替子元素,而是使用<li>
:
success: function (x) {
var opts = '';
$.each(x.d, function (i) {
opts += '<li>' + this.Name + '</li>';
});
$('.dropdown-menu').html(opts);
}
甚至更好:
success: function (x) {
$.each(x.d, function (i) {
$('<li>').text(this.Name).appendTo('.dropdown-menu');
});
}