2013-05-15 4 views
0

Я использую функцию ajax для заполнения combobox. У меня такой код ajax.как заполнить combobox с помощью функции ajax?

$(document).ready(function() { 

    alert(); 

    $.ajax({ 

    url:'Stations.php', 
    type:'POST', 
    // data: 'q=' + str, 
    dataType: 'json', 
    success: function(json) { 
     $.each(json, function(i, value) {     
        .append($('<option></option>', {text:value}) 
        .attr('value', text)); 
     }); 
    } 
    }); 
}); 

и мой код php выглядит следующим образом.

function getStationList() 
{ 
    $db = new DBManager(); 
    $mysqli = $db->db_connect(); 

    $query = "SELECT name FROM car"; 

    $stmt = $mysqli->prepare($query); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 

    $list = array(); 

    while($row = $result->fetch_assoc()) 
    { 
     $list[] = $row['name']; 
    } 

    return json_encode($list); 
} 

когда я скомпилирую свой код php, я получаю outpu like;

[ "car1", "car2", "car3"]

я хочу послать эту car1, car2, car3 на мой ящик мой HTML код

<div class="content" data-role="content" id="content" > 
     <div id="car"> 
      <select name="selectSt" class="span12" id="selectSt" > 
      <option></option> 
      <option></option> 
      <option></option> 
      </select>           
     </div> 
     <div id="cinfo"></div> 
     <button onclick="javascript:callCarInfo.call(this,document.getElementById('selectSt').value);">Call Podcar</button> 
</div> 

     <div class="footer" data-role="footer"><h1>IYTE PRT&copy;</h1></div> 
    </div> 

Я не мог заполнить эта опция>/опция> с car1 car2 и значения car3 ..

ответ

2

если ваш скрипт (Sations.php) возвращает данные, такие как [ "car1", "car2", "car3"]

Update : текст не определен в цикле, оно должно быть значение: http://jsfiddle.net/6PEbe/1/

$.ajax({ 
    url:'Stations.php', 
    type:'POST', 
    dataType: 'json', 
    success: function(json) { 
     $.each(json, function(i, value) { 
      $('<option></option>', {text:value}).attr('value', value).appendTo('#selectSt'); 
     }); 
    } 
    }); 
+0

он не работает :(Я не мог видеть значение (от MySQL которые являются car1, car2, car3) в коробке. – goGud

+0

см. Обновленный ответ – RafH

+0

Похоже на работу, но мне нужны эти значения из инструкции mysql, что я должен делать для этого? – goGud

0

Использование children() в функции each обратного вызова для добавления <option> теги:

$("#selectSt").children().append(valueYouWantToAdd); 
+0

Я не мог понять вашу идею. – goGud

1

Прежде всего, если я где в вашей обуви, я бы не использовать append в each проблем с производительностью

Пожалуйста модифицируем ATTRIBUTE_NAME

Я хотел бы сделать следующее

$.ajax({ 
    url:'Stations.php', 
    type:'POST', 
    dataType: 'json', 
    success: function(json) { 
     var HTML = ""; 

     $.each(json, function(i, value) { 
      console.log("my val is"+value+" my key is"+i); 
      HTML = HTML+"<option>"+value+"</option>"; 
     }); 
     $('#selectSt').append(HTML); 
    } 
    }); 

Это лучшая практика с точки зрения производительности

Я надеюсь, что это может помочь :)

+1

+1 для оценки производительности. –

+0

Должен ли я изменить свой html-код? после этого? потому что он тоже не работал :( – goGud

+0

Нет, нет, не могли бы вы заменить value.attribute_name значением – Sedz

Смежные вопросы