我有以下文件在查询字符串中传递变量。
我能做什么
获取document.getElementById("getthis").innerHTML
并将其保存
var getthis
。
选择值$('#first').val();
并将其保存在var from
我无法做什么
document.getElementById("list1").innerHTML
,document.getElementById("list2").innerHTML
,document.getElementById("list3").innerHTML
并将其保存为var data
格式var data = { seats_booked: [ 'B2', 'B5', 'A20' ] };
。我想知道如何做到这一点,因为在查询字符串中我可以使用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>
答案 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