2015-11-03 165 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

相關問題