【问题标题】:Populating a dropdown box using an XML file in PHP在 PHP 中使用 XML 文件填充下拉框
【发布时间】:2013-02-12 11:39:07
【问题描述】:

我用谷歌搜索了这个,只能找到有关使用 AS3 执行此操作的信息 - 我正在使用 PHP、jQuery 和 HTML。使用这些技术是否可行?如果可行……如何?

【问题讨论】:

  • 当然,是的。将问题分解为多个部分 - 使用 PHP 读取 XML 文件(比如使用 SimpleXML - 网络搜索),并将其转换为 JSON 字符串(json_encode),然后使用 jQuery 中的 AJAX 操作之一读取它.在 PHP 中创建菜单并在 JSON 中将其作为 HTML 字符串返回,或者在 JSON 中返回一个数组并在 JavaScript 中组合菜单。我更经常做前者,但情况会有所不同。

标签: php jquery xml drop-down-menu


【解决方案1】:

假设您有以下 XML 文件 (songs.xml)

<songs>
    <song>
        <name>I left my heart on Europa</name>
        <id>1</id>
    </song>
    <song>
        <name>Oh Ganymede</name>
        <id>2</id>
    </song>
    <song>
        <name>Kallichore</name>
        <id>3</id>
    </song>
</songs>

使用以下 PHP 代码,您可以 generate JSON 仅使用 XML 文件中的数据(我们将其命名为 xml.php):

<?php

// load the XML file
$songs   = simplexml_load_file('songs.xml');

// get all song elements as an array
$options = iterator_to_array($songs->song, false);

// output json
echo json_encode($options);

Online Demo

现在你只需要用 jQuery 做一个 ajax 请求:

$.getJSON("xml.php",function(j){
       var $option = $("#option");
          $option.empty();
          $.each(j, function () {
            $option.append($('<option></option>').attr("value", this.id).text(this.name));
          });   
});

像这样填充 html 代码:

<select name="x" id="option"></select>

jquery 未经测试,但如果您已经使用它,您可以修复任何错误:)

【讨论】:

  • 我编辑了答案,因为它的 JSON 编码存在一些缺陷。 PHP 自带了这里所需的一切,实现起来也容易得多。
  • 这是一个很好的答案,但请考虑帮助用户而不是为他们工作。 SO 的一个重要区别是鼓励自给自足,从长远来看,这将为 OP 提供更好的服务。尽管如此,+1。
【解决方案2】:

您必须导入 xml 并对其进行解析,这将为您提供一个可以循环的对象或多维数组,从而为下拉菜单创建元素。

【讨论】:

    【解决方案3】:

    我不明白为什么不呢?您想用 XML 中的元素填充 Dropbox?通过下拉框,您可能意味着选择选项 HTML 元素。 PHP 中有很多 XML 解析器,例如 SimpleXML end 当您获取元素时,只需在 php 中循环并设置选项值。

    纯 PHP 解决方案(与 Sacx 相同的 XML):

    <?php
    $songs = simplexml_load_file('songs.xml');
    
    echo "<select id='SELsongs'>";
    
    foreach($songs as $song)
    {
    echo "<option value='".$song->id."'>".$song->name."</option>";
    }
    echo "</select>";
    
    ?>
    

    【讨论】:

    • 谢谢 - 这将是一种享受。会正确的。谢谢。
    • Sack-s 解决方案很好,并且可能有效,但我不知道您是否真的需要为此使用 jquery?是的,如果您将使用用 javascript 制作的特殊类型的保管箱。对于简单的选择选项 PHP 解决方案就足够了,我认为制作 json 字符串并对其进行解析是多余的。
    • 我根本不需要使用 jquery,一切都是在页面加载时完成的,下拉菜单的内容一点也不动态。所以是的,只需简单的 PHP simplexml 解析器和循环就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多