Я пытаюсь поместить список строки, которую я получаю из своей базы данных, в раскрывающееся меню. Я попытался использовать массив, но он показывает мне ошибку [[object Object, object Object]...]. Это мой метод 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 + ''; и если я hoverover, я получаю такое же сообщение, как [[object Object], [object, Object]...], если я затем нажимаю на знак +, я получаю, что дети не могут быть оценены. Отображается одно и то же сообщение. Может ли кто-нибудь помочь мне здесь?
Это то, что мой 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());
});
Похоже, что x
- это объект, а не массив, а данные, которые вы хотите отобразить, находятся внутри xd
. Кроме того, xd
не является массивом строк, а массив объектов, содержащий свойства 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');
});
}