在下拉菜单中解析所选值

时间:2015-02-20 18:54:00

标签: javascript php jquery html

我试图通过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 "&nbsp;<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 &gt;&gt;</a></button>"; 

所以说它&amp; order_by =&#34; 。 $ _GET [&#39; order_by&#39;]。是我想要将当前选定的值解析到下一页的位置。但是我没有用这个Get方法获取url中的值 - 我做错了什么?

2 个答案:

答案 0 :(得分:1)

使用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, '', '&amp;');
//OUTPUT: foo=bar&amp;baz=boom&amp;cow=milk&amp;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>

答案 1 :(得分:0)

只需输入提交按钮而不是标签,然后点击它。它将通过get方法发送选定的值。并确保你在表单元素

中定义action属性
        <form action="">
        <select>
       .....................  
       </select>
        <input type="submit" name="submit">
        </form>