首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery / JSON下拉框填充

问JQuery / JSON下拉框填充
EN

Stack Overflow用户
提问于 2014-01-24 22:46:44
回答 3查看 405关注 0票数 0

返回到填充HTML下拉框。

我有一个php文件(dropdown.php)产生一个JSON格式的输出;

代码语言:javascript
复制
{ "filenames" : [ "xml_cd.xml", "xml_plants.xml" ] }

我现在正在尝试让JQuery生成一个包含这些选项的下拉框。

这是HTML。

代码语言:javascript
复制
<body>

<script>

var obj;

function setupTableNamesList()
{
  $.getJSON ("dropdown.php",
    function(jsondata) {
      if ( jsondata.names.length > 0 )
      {
        var html = '<select id="tablename" name="tablename">';
        html += '<option value="none">Please select a table</option>';
        for ( i = 0; i < jsondata.filenames.length; i++ )
        html += '<option value="' + jsondata.filenames[i] +'">' + jsondata.filenames[i] + '</option>';
        html += "</select>";
        $("#select xml").html(html);
      }

    }//function
  );

}//setupTableNamesList

$(document).ready(function(){

  setupTableNamesList();  

});//$(document).ready




</script>

    <form>
<div id ="test">

</div>
        <div id ="select xml">

        </div>
    </form>
</body>

我没有收到任何类型的错误,但下拉框也没有出现-在正确的方向上轻推将不胜感激!

编辑* php脚本

代码语言:javascript
复制
<?php


$dir = glob("xml/*.xml");
$count = count($dir);
$json = '{ "filenames" : [ ';
        $j = 0;

if ($count > 0)
{
    for ($i = 0; $i < $count; $i++) {

        $j++;
        if ($j > 1)
        {
            $json .=  ', ';
        }
        $name = (substr($dir[$i],4));
        $json .= '"' . $name . '"';

    }

    $json .= ' ] } ';
    echo ($json);
    }
else
{
    echo "error";
}   

?>
EN

回答 3

Stack Overflow用户

发布于 2014-01-24 22:51:14

jsondata.names.length > 0应为jsondata.filenames.length > 0。更好的方法是:

代码语言:javascript
复制
if (jsondata && jsondata.filenames && jsondata.filenames.length > 0)

这将防止你的应用程序出错,以防你得不到你期望的东西。

票数 1
EN

Stack Overflow用户

发布于 2014-01-24 23:28:08

您的JavaScript实现的一个基本版本似乎可以工作:

代码语言:javascript
复制
jQuery(document).ready(function (e) {

    var jsondata = { "filenames" : [ "xml_cd.xml", "xml_plants.xml" ] }

    if ( jsondata.filenames.length > 0 )
    {
        var html = '<select id="tablename" name="tablename">';
        html += '<option value="none">Please select a table</option>';
        for ( i = 0; i < jsondata.filenames.length; i++ )
            html += '<option value="' + jsondata.filenames[i] +'">' + jsondata.filenames[i] + '</option>';
        html += "</select>";

        jQuery("#selectxml").html(html);
    }

});

注意,我已经用jsondata.filenames替换了jsondata.names,并且将元素的ID从select xml重命名为selectxml。

See the fiddle here。

在这种情况下,我假设问题出在php上。我强烈建议在php中正确设置头文件。这里有一个非常基本的例子:

代码语言:javascript
复制
<?php

header('Content-Type: application/json');

$json = '{ "filenames" : [ "xml_cd.xml", "xml_plants.xml" ] }';
echo $json;

?>
票数 0
EN

Stack Overflow用户

发布于 2014-01-24 23:30:03

if ( jsondata.names.length > 0 )

哦..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21335547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档