I'm trying to direct a browser to a different page. If I wanted a GET request, I might say
document.location.href = 'http://example.com/q=a';
But the resource I'm trying to access won't respond properly unless I use a POST request. If this were not dynamically generated, I might use the HTML
<form action="http://example.com/" method="POST">
<input type="hidden" name="q" value="a">
</form>
Then I would just submit the form from the DOM.
But really I would like JavaScript code that allows me to say
post_to_url('http://example.com/', {'q':'a'});
What's the best cross browser implementation?
Edit
I'm sorry I was not clear. I need a solution that changes the location of the browser, just like submitting a form. If this is possible with XMLHttpRequest, it is not obvious. And this should not be asynchronous, nor use XML, so Ajax is not the answer.
Using the
createElement
function provided in this answer, which is necessary due to IE's brokenness with the name attribute on elements created normally withdocument.createElement
:Example:
EDIT: Since this has gotten upvoted so much, I'm guessing people will be copy-pasting this a lot. So I added the
hasOwnProperty
check to fix any inadvertent bugs.You could use a library like jQuery and its $.post method.
FormObject is an option. But FormObject is not supported by most browsers now.