2015-11-03 110 views
0

我收到了有关将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>'); 

    }); 
}); 

我想是我的选择选项的值作为我的XML解析器输入。如果我运行这个代码,那么我会得到一个错误,即XML无效。

澄清:如果我设置一个固定的值,那么它的工作原理:

var xmlDoc = $.parseXML(user20); 

但是,如果我想将它设置变量它不工作:

var xmlDoc = $.parseXML(user); 

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

DEMO CAN BE FOUND HERE

回答

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>'); 

    }); 
}); 
+0

是的!完美解决方案谢谢你帮助我! :) – Rotan075

相关问题