2014-01-22 2 views
0

데이터베이스에서 가져온 문자열 목록을 드롭 다운 메뉴에 배치하려고합니다. 나는 배열을 사용하려고하지만 그것은 나에게 [[object object, object Object] ...]의 오류를 보여준다. 내가 $ .each에 중단 점을 배치하면 현재드롭 다운 메뉴에 문자열 목록을 삽입하는 방법

<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> 

(X, 기능 (i) 및 hoverover의 XI : 이것은 내 아약스 방법

$(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); 
      } 
     }); 
    } 

이 내 메뉴 드롭 다운입니다 만약 내가 + 기호를 클릭하면 데이터베이스에서 내 데이터를 얻는다.

그러나 breakpoint가 opts + = '+ this +'에 도달하면, '; 그리고 만약 내가 가리키면 나는 같은 메시지를 얻는다. [ObOb ject], [object, Object] ...]를 클릭하고 + 기호를 클릭하면 아이들을 평가할 수 없습니다. 같은 메시지가 나타납니다. 누군가 나를 도와 줄 수 있습니까?

 -  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를 기능입니다 :

이 내 x는 무엇 x 당신은 표시 할 객체가 아닌 배열, 데이터처럼

$('.dropdown-menu li').on('click', function() { 
      $('#dropdown_title').html($(this).find('a').html()); 
     }); 
+0

내가 클릭 할 때 내가 무엇을 얻을에 놓여있다 x의 위에. 당신이 볼 수 있듯이 x는 "Jhon"이름을 포함하므로 데이터베이스에서 얻으려는 네 개의 이름이 있습니다 –

답변

0

같습니다 inside x.d. 또한 x.d은 문자열 배열이 아니고 Name 속성을 포함하는 개체 배열입니다.

마지막으로 .dropdown-menu 요소 대신 너무보다는 자식 요소에 대한 <option>를 사용 <li><ul> 사용하는 것입니다 :

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'); 
    }); 
} 
+0

별표 :) 감사합니다. 그냥 마지막 질문, 현재 나는 JhonDipeshCharly 어떻게 이름을 다른 이름으로 각기 다른 줄에 그렇게 분리합니까? –

+0

다시 한번 감사드립니다. 마지막 최종 질문이 있습니다. 이제 모든 이름이 드롭 다운 메뉴에 배치됩니다. 내가 그들을 선택할 수있는 방법이 있니? 내가 선택을위한 코드를 가지고 있지만 그 코드를 어디에 두겠습니까? 내 질문의 마지막에 코드를 넣었습니다 –

+0

@Dip 여러분의 선택기에 공간이 필요해 보입니다 :'$ (". dropdown-menu li"). click (...);' –

관련 문제