如何使用getElementById将对象传递给javascript中的查询字符串

时间:2016-03-22 13:57:39

标签: javascript

我有以下文件在查询字符串中传递变量。

我能做什么

  1. 获取document.getElementById("getthis").innerHTML并将其保存 var getthis

  2. 选择值$('#first').val();并将其保存在var from

  3. 我无法做什么

    1. 获取此值document.getElementById("list1").innerHTMLdocument.getElementById("list2").innerHTMLdocument.getElementById("list3").innerHTML并将其保存为var data格式var data = { seats_booked: [ 'B2', 'B5', 'A20' ] };
    2. 我想知道如何做到这一点,因为在查询字符串中我可以使用PHP获取变量。

      我希望我的问题很明确,我们将不胜感激。提前谢谢。

      以下是代码:

      <?php 
      $str = $_SERVER['QUERY_STRING'];
      parse_str($str);
      echo  $seats_booked[0];
      ?>
      
      <!doctype html>
      <html>
        <head>
          <meta charset="utf-8">
          <title>Untitled Document</title>
        </head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
        <body>
          <ul>
            <li id="getthis">list</li>
          </ul>
          <select id="first" name="first">
            <option value="10">First</option>
            <option value="11">Second</option>
            <option value="12">Third</option>
            <option value="13">Forth></option>
          </select>
          <ul>
            <li id="list1">B2</li>
            <li id="list2">B5</li>
            <li id="list3">A20</li>
          </ul>
          <button id="next" name="next">Next Step</button>
          <script type="text/javascript">
            $(document).ready(function(){
              $("#next").click(function() {
                var data = { seats_booked: [ 'B2', 'B5', 'A20' ] };
                var result = $.param(data);
                var first = $('#first').val();                            
                var getthis = document.getElementById("getthis").innerHTML;
                window.location = '?first='+first+'&getthis='+getthis+'&result='+result;
              });
            });
          </script>
        </body>
      </html>
      

3 个答案:

答案 0 :(得分:1)

jQuery.param将数据结构转换为用于查询字符串的格式。整个查询字符串。不是查询字符串 *

的位

将所有数据放入查询字符串中,然后在其上使用param

var result = { seats_booked: [ 'B2', 'B5', 'A20' ] };
var first = $('#first').val();                          
var getthis = document.getElementById("getthis").innerHTML;

var data = {
    result: result,
    first: first,
    getthis: getthis
};

var query = jQuery.param(data);

window.location = "?" + query;

* 更确切地说,它转换为适合查询字符串的一组key = value对,因此您可以自己加入它们。您的问题是您正在使用key = value对,然后尝试将它们用作单个查询字符串值。但是你也没有正确编码其余数据,并且使用param来完成整个过程更加清晰和易于维护。

答案 1 :(得分:0)

你可以这样做

<ul class="seats_booked">
<li id="list1">B2</li>
<li id="list2">B5</li>
<li id="list3">A20</li>
</ul>
var seats_booked = [];
$("ul.seats_booked li").each(function() { seats_booked.push($(this).text()) });
var data = {};
data["seats_booked"]=seats_booked;

答案 2 :(得分:0)

你的意思是这样吗? https://jsfiddle.net/5p6k11ny/ 我只将window.location更改为console.log

var data = { seats_booked: [] };
data.seats_booked.push(document.getElementById("list1").innerHTML);
data.seats_booked.push(document.getElementById("list2").innerHTML);
data.seats_booked.push(document.getElementById("list3").innerHTML);

Ofc,你可以在像

这样的循环中完成
"list" + i