只有在设置时才传递GET信息

时间:2014-11-05 00:57:50

标签: php html forms

我正在使用带有GET方法的表单添加到查询字符串中。

我遇到了一个问题。提交表单时,会发送每个字段并将其添加到查询中,包括没有值。

示例:

http://web.com/?filter-types=news&filter-document-type=&filter-topics=we-have-a-topic&filter-featured=&filter-rating=

如果未设置查询字符串,是否可以将它们添加到查询字符串中? !isset()还是有其他办法吗?

3 个答案:

答案 0 :(得分:1)

你也可以通过javascript操纵表单输入,只是Mike在评论中说,提交检查字段,如果为空,禁用它们以便它们不会被包含在提交中。

这只是基本的想法(使用jQuery):

<form method="GET" id="form_inputs">
    <input type="text" name="field1" value="field_with_value" /><br/>
    <input type="text" name="field2" value="" /><br/><!-- empty field -->
    <input type="text" name="field3" value="field_with_value" /><br/>
    <input type="submit" name="submit_form" id="submit_form" value="Submit" />
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$('input[name="submit_form"]').on('click', function(e){
    e.preventDefault();
    $('form').children().each(function(i, e){
        if($(e).is('input') && $(this).val() == '') {
            $(this).prop('disabled', true);
            // or $(this).attr('name', '');
        }
    });
    $('form').submit();
});
</script>

或者如果您根本不想使用jquery:

document.getElementById('submit_form').addEventListener('click', function(e){
    e.preventDefault();
    var children = document.getElementById('form_inputs').childNodes;
    for(i = 0; i < children.length; i++) {
        if(children[i].type == 'text' && children[i].value == '') {
            children[i].disabled = true;
        }
    }
    document.getElementById('form_inputs').submit();
});

答案 1 :(得分:0)

所有这些键出现在查询字符串中的原因是因为它们作为表单中的输入存在。如果您不希望发送它们,请从表单中删除它们,或者至少为它们提供一些有意义的默认值。

答案 2 :(得分:0)

我猜你正在寻找一个条件

 if (!empty($_POST['var'])) {

 }

OR

 if (!isset($_POST['var']) && !empty($_POST['var'])) {

 }