How to remove trailing question mark from a GET form with no fields?

Without using Javascript, I'm not sure there is one. One way to alleviate the problem may be to create a hidden input that just holds some junk value that you can ignore on the other side like this:

<input type="hidden" name="foo" value="bar" />

That way you will never have an empty GET request.


In my case I'm using window.location, not sure it's the best alternative, but it's the only one I could make it work:

$('#myform').submit(function()
{
    ... if all parameters are empty

    window.location = this.action;
    return false;
});

My real use was to convert GET parameter to real url paths, so here is the full code:

$('#myform').submit(function()
{
    var form = $(this),
        paths = [];

    // get paths
    form.find('select').each(function()
    {
        var self = $(this),
            value = self.val();

        if (value)
            paths[paths.length] = value;

        // always disable to prevent edge cases
        self.prop('disabled', true);
    });     

    if (paths.length)
        this.action += paths.join('/')+'/';

    window.location = this.action;
    return false;
});

Tags:

Html

Forms

Get