Note (2025): This article dates back to 2009. The examples remain useful, though modern apps often prefer fetch()/XHR or form submissions driven by frameworks. The classic form‑build approach below still works universally.

HTML 4.0 (W3C) defines how browsers submit forms:

  • GET: append query string to the action URL (application/x-www-form-urlencoded).
  • POST: send a request body to the action URL, using the content type indicated by enctype.

Programmatic POST helper

Add this in your page head:

<script>
function post(dictionary, url, method) {
  method = (method || "post").toLowerCase();
  var form = document.createElement("form");
  form.setAttribute("method", method);
  form.setAttribute("action", url);
  for (var key in dictionary) {
    if (!Object.prototype.hasOwnProperty.call(dictionary, key)) continue;
    var hidden = document.createElement("input");
    hidden.type = "hidden";
    hidden.name = key;
    hidden.value = dictionary[key];
    form.appendChild(hidden);
  }
  document.body.appendChild(form);
  form.submit();
}
</script>

Usage in the body:

<script>
  var myDictionary = {};
  myDictionary["1stKey"] = "1stValue";
  myDictionary["2ndKey"] = "2ndValue";
</script>

<input type="button" value="Click me to POST"
       onclick="post(myDictionary, 'destination.html');" />
<input type="button" value="Click me to GET"
       onclick="post(myDictionary, 'destination.html', 'get');" />

The helper accepts a key/value dictionary, a destination URL, and an optional method (post or get).

jQuery.post alternative

If you already use jQuery, you can leverage its shorthand:

jQuery.post(url, data, success, dataType);
// or
$.ajax({ type: "POST", url, data, success, dataType });

$.post("test.php", { "1stKey": "1stValue", "2ndKey": "2ndValue" });

Further details: jQuery.post()