如何用ajax函数填充组合框?

时间:2013-05-15 22:02:24

标签: php html ajax json

我正在使用ajax函数来填充组合框。我有这样的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;

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

我无法填写此选项&gt; / option&gt;与car1 car2和car3值..

3 个答案:

答案 0 :(得分:2)

如果你的php脚本(Sations.php)返回像[“car1”,“car2”,“car3”]这样的数据

更新:文本未在循环中定义,应为值: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');
        });
    }
  });

答案 1 :(得分: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); 
    }
  });

这是从绩效角度出发的最佳做法

我希望这可以帮助:)

答案 2 :(得分:0)

使用children()回调函数中的each附加<option>代码:

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