Reputation: 1343
I want to post some data to another domain with the enctype equal to multipart/form-data, because I want the unmodified data in the server side. Here is my test code:
<textarea name="txt" rows="20" cols="80">
</textarea>
<script>
function x_domain_post(url, data)
{
var dd = document.createElement('div');
var ifrname = "client_proxy";
dd.innerHTML = "<iframe id='" + ifrname + "' name='" + ifrname + "' width=0 height=0 ></iframe>";
document.getElementsByTagName('body')[0].appendChild(dd);
var ifr = document.getElementById(ifrname);
var f = document.createElement('form');
f.action = url;
f.method = "post";
f.enctype = "multipart/form-data";
f.target = ifr.name;
f.innerHTML = f.innerHTML + "<textarea name='request'>default</textarea>";
document.getElementsByTagName("body")[0].appendChild(f);
document.getElementsByName("request")[0].value=data;
f.submit()
setTimeout(function(){document.getElementsByTagName("body")[0].removeChild(f);}, 1000);
}
</script>
<button onclick="x_domain_post('http://192.168.232.128/add', document.getElementsByName('txt')[0].value)">
The request in chrome is:
...
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary9zCD31eJSHkdb8ul
...
------WebKitFormBoundary9zCD31eJSHkdb8ul
Content-Disposition: form-data; name="request"
a
b
o
------WebKitFormBoundary9zCD31eJSHkdb8ul--
But in IE9:
POST /add HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
...
request=a%0D%0A%0D%0Ab%0D%0A%0D%0Ao
Any of your help will be appreciated!
Upvotes: 5
Views: 18615
Reputation: 3929
Does this help?
Apparently in IE, you have to set the "encoding" of the form rather than the "enctype". The good news is, you can set both values without concern and this will take care of the problem
Upvotes: 6