GET+POST in same form?
October 26, 2006 9:02 AM

Is it possible to set the action attribute of an HTML form, such that the method is POST, but the action includes GET variables?

For example, I'd like the following code:

<form name="edit_name" action=".?debug" method="post">
<input type="submit" value="Edit">
</form>


to return GET value containing debug and a POST value containing Edit.

Is this reasonable or possible?
posted by Blazecock Pileon to Computers & Internet (8 answers total)
It’s possible, sure. That syntax won’t work, though; you’ll need to give the path to the page, which probably isn’t a single dot.

If you’re using something proprietary as a server-side language, they may not have support for it, because it’s not really idiomatic. PHP and Perl certainly do, and I would be shocked if Ruby and Python didn’t. But that wasn’t your question :-) .
posted by Aidan Kehoe at 9:10 AM on October 26, 2006


Doesn't seem to work, even with a fully-specified path in the action. Only the GET variable gets through; POST is empty. I'm using PHP.
posted by Blazecock Pileon at 9:13 AM on October 26, 2006


Yeah, the HTML you posted isn't quite right.

Try this:
<form name="edit_name" action="this.php?debug" method="post">
<input type="submit" name="myfield" value="Edit">
</form>


The problem was your input button didn't have a name attribute. Now, after clicking edit, your PHP $_GET superglobal should contain the 'debug' field, with no value, and $_POST will contain the 'myfield' field, with value 'Edit'.
posted by matthewr at 9:20 AM on October 26, 2006


I'm a dummy; thanks so much.
posted by Blazecock Pileon at 9:24 AM on October 26, 2006


Out of curiosity, why would you want to mix GET and POST? Wouldn't it be easier (and less hacky) to just use POST for all the variables?

<input type="hidden" name="debug" value="whatever">
posted by ook at 9:26 AM on October 26, 2006


I'd like to be able to debug variables "on the fly" as I write methods, whether or not I've triggered a form.
posted by Blazecock Pileon at 9:47 AM on October 26, 2006


That syntax won’t work, though; you’ll need to give the path to the page, which probably isn’t a single dot.

You can also get away with just ?foo=bar bit:

<form name="edit_name" action="?debug" method="post">

The browser (well, Firefox and IE, at least) will construct the URI appropriately, saving you a little URL munging.
posted by IshmaelGraves at 11:06 AM on October 26, 2006


FWIW you can also do "./?blahblahblah" if you want to be both explicit ("I want to access the same URL/resource that I'm currently at") and terse.
posted by cyrusdogstar at 2:44 PM on October 26, 2006


« Older Does this feature exist in Firefox 2?   |   How do I loop an AVI video? Newer »
This thread is closed to new comments.