选择框更改时传递值

时间:2015-11-03 10:59:09

标签: javascript jquery html xml

我有一个关于将select选项的值传递给我的XML解析器的问题。首先看看我的代码:

HTML

<table id="ProfileList">
    <tr>
        <td>session</td>
        <td>timestamp</td>
    </tr>
</table>
<select>
  <option value="none">--select user--</option>  
  <option value="user20">user20</option>
  <option value="user30">user30</option>
  <option value="user40">user40</option>
  <option value="user50">user50</option>
</select>

正如你所看到的,我有一个带有5个选项的选择框,只有最后四个是重要的。

的Javascript

$('select').change(function() {
    var user = $(this).val();
    alert($(this).val());

    //Sample XML    
    var user20 = "<?xml version='1.0' ?><results><row><session>21</session><time>2014-02-28 21:12:12</time></row><row><session>176763</session><time>2014-03-01 14:04:35</time></row></results>";

    var user30 = "<?xml version='1.0' ?><results><row><session>26</session><time>2014-02-28 21:12:12</time></row><row><session>176763</session><time>2014-03-01 14:04:35</time></row></results>";

    //Parse the givn XML
    var xmlDoc = $.parseXML( user ); 

    var $xml = $(xmlDoc);


    var $row = $xml.find("row");
    $row.each(function(){

        var session = $(this).find('session').text(),
            time = $(this).find('time').text();
        $("#ProfileList" ).append('<tr><td>' +session+ '</td>' + '<td>' +time+ '</td></tr>');

    });
});

我想要的是我的select选项的值被用作我的XML解析器的输入。如果我运行此代码,那么我将收到XML无效的错误。

澄清一下:如果我设定了一个固定值,那么它可以工作:

var xmlDoc = $.parseXML( user20 ); 

但是如果我想设置它变量它不起作用:

var xmlDoc = $.parseXML( user ); 

有谁能告诉我为什么会这样,也许我怎么能解决这个问题?

DEMO CAN BE FOUND HERE

1 个答案:

答案 0 :(得分:1)

我会使用一个包含XML示例的对象,并通过对象的属性名访问每个XML,请参阅http://jsfiddle.net/3po6xgmt/,其中

$('select').change(function() {
    var user = $(this).val();
    alert($(this).val());

    //XML samples
    var samples = {
        user20 : "<?xml version='1.0' ?><results><row><session>21</session><time>2014-02-28 21:12:12</time></row><row><session>176763</session><time>2014-03-01 14:04:35</time></row></results>",
        user30 : "<?xml version='1.0' ?><results><row><session>26</session><time>2014-02-28 21:12:12</time></row><row><session>176763</session><time>2014-03-01 14:04:35</time></row></results>"
    };

    //Parse the given XML
    var xmlDoc = $.parseXML( samples[user] ); 

    var $xml = $(xmlDoc);


    var $row = $xml.find("row");
    $row.each(function(){

        var session = $(this).find('session').text(),
            time = $(this).find('time').text();
        $("#ProfileList" ).append('<tr><td>' +session+ '</td>' + '<td>' +time+ '</td></tr>');

    });
});