我正试图通过http请求将下拉列表的当前选定值解析到下一页,因此选定的值将通过url解析到下页。
表单下拉列表如下所示:
<form name="sortby">
<select id="order_by" name="order_by" onchange="sortBy()">
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'choose') echo ' selected="selected"'; ?> value="choose">Sort By</option>
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'OVERALL_VALUE') echo ' selected="selected"'; ?> value="OVERALL_VALUE">Most Popular</option>
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'PRICE') echo ' selected="selected"'; ?> value="PRICE">Price (low to high)</option>
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'PRICE_REVERSE') echo ' selected="selected"'; ?> value="PRICE_REVERSE">Price (high to low)</option>
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'QUALITY') echo ' selected="selected"'; ?> value="QUALITY">Rating</option>
</select>
</form>
这是我想将所选值发布到下一页的位置-通过按钮:
echo " <button><a href='"$PHP_SELF?go&s=$news&cacheKey=$cacheKey&cacheLocation=$cacheLocation&customerSessionId=$customerSessionId&name=" . strval($_GET['name']) . "&arrival=" . strval($_GET['arrival']) . "&departure=" . strval($_GET['departure']) . "&rooms=" . strval($_GET['rooms']) . "&numberOfGuests=" . strval($_GET['guests']) . "&order_by=" . $_GET['order_by'] . "'">Next >></a></button>";
那么它在哪里说&order_by=".$_GET['order_by']。是我想将当前所选值解析到下一页的位置。但我用这个GET方法没有得到url中的值-我做错了什么?
使用http_build_query()
进行清理。这样使用:
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
echo http_build_query($data) . "'n";
//OUTPUT: foo=bar&baz=boom&cow=milk&php=hypertext+processor
echo http_build_query($data, '', '&');
//OUTPUT: foo=bar&baz=boom&cow=milk&php=hypertext+processor
或者,使用JS可以这样做:
function getCurrentParams() {
var url = document.URL;
var url_split = url.split("?");
var params = url_split[1];
return params;
}
function urlToObj(url) {
var obj = {};
var pairs = url.split('&');
for (i in pairs) {
var split = pairs[i].split('=');
obj[decodeURIComponent(split[0])] = decodeURIComponent(split[1]);
}
return obj;
}
function getQuery(e){ // will fire on button click
var value = $("#order_by").val();
var params_string = getCurrentParams();
var get_params_obj = urlToObj(params_string);
get_params_obj.orderBy= value;
var params = $.param(get_params_obj);
alert(params);
location.href = "http://youbaseurl.com?"+params;
return false;
}
HTML:
<button onclick="return getQuery(this)"></button>
只需放置一个提交按钮而不是标记并点击它。它将通过get方法发送选定的值。并确保u在表单元素中定义动作属性
<form action="">
<select>
.....................
</select>
<input type="submit" name="submit">
</form>