【问题标题】:Adding to an array in sqlite3 and passing with json to jquery ajax添加到 sqlite3 中的数组并使用 json 传递给 jquery ajax
【发布时间】:2012-07-29 14:22:57
【问题描述】:

我尝试从数据库中填写下拉列表。我查询并将结果添加到数组中。然后我使用 json_encode 将我的数据发送到一个 php 文件。

$query="SELECT project FROM main";
$results = $db->query($query);
while ($row_id = $results->fetchArray()) {
       $proj_option[] = "<option value=\"".$row_id['project']."\">".$row_id['project']."</option>\n";
       $pselected=$row_id['project'];
}
$output = array( "proj" => $proj_option);
echo json_encode($output);

在我的 php 文件中,我使用 jquery ajax 来填充下拉列表。

$("#turninId").change(function() {

    var user_id = $("#turninId").val();

    $.ajax ( {
      url:"send_input.php",
      type: "POST",
      dataType: "json",
      data:{id_selection: user_id},
      success:function(response) {

        for (var i=0; i<response.proj.length; i++) {
          $("#exp").html(response.proj[i]);
          $("#project").html(response.proj[i]); } });

 });

这很好,但是我的下拉列表中唯一的项目是数据库中的最后一项。例如,我的数据库在 Project 下有以下内容:

Project: up, down, low, right

但我的下拉列表只填充了最后一个条目,“正确”。为什么是这样?我该如何解决?

PHP json_encode() in while loop 类似,我进行了更改,但这里缺少一些东西。

【问题讨论】:

    标签: php jquery ajax json multidimensional-array


    【解决方案1】:

    可以试试这个

    success:function(response) {
    
      $.each(response.proj,function(key,value){
          $("#exp").append(value);
          $("#project").append(value);
      });
    
    }
    

    【讨论】:

    • 使用 append 正是我所需要的!谢谢
    【解决方案2】:

    每次通过 javascript 循环,您都会覆盖您的 html。 .html() 方法设置标签的innerHTML 属性,因此每次调用它时都会重置html,并且只会显示最后一个。尝试不使用循环,而是将您的响应连接在一起,然后调用 .html()

    $("#exp").html(response.proj.join(''));
    $("#project").html(response.proj.join(''));
    

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 2018-04-24
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      相关资源
      最近更新 更多