Autor Zpráva
sniclman
Profil *
Ahoj,
můžete mi někdo poradit jak na upload obrázku přes ajax v IE8 a IE9? Firefox, chrome a IE11 zvládnou input.files a new FormData() (pokud jsem správně pochopil jedná se o API funkce?), nicméně IE8/9 tyto funkce nepodporují. Bohužel jsem na google nenašel žádné řešení, věšinou jen odkazy na složité funkce a nebo jQuery (s kterým neumím pracovat).

Ukázka funkčního kódu (ne pro IE8/9): http://matraux.com/other/dynamic_img/

<div style="width: 100px; height: 100px; overflow: hidden; border: 2px #000000 solid; cursor: pointer;" onClick="dynamic_select(this);">
<img border="0" style="width: 100%; height: 100%;">
Click to upload
<input type="file" name="image[]" style="display:none;">
</div>

//ActiveXObject/XMLHttpRequest
function request(){return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();}

function dynamic_select(object){
var childs = object.childNodes;
for(i=0; i<=childs.length-1; i++){
if(childs[i].tagName == 'INPUT' && childs[i].type == 'file'){var file = childs[i];}
else if(childs[i].tagName == 'IMG'){var img = childs[i];}
else{}}
file.onchange=function(){dynamic_preview(this, img);};
file.click();}


function dynamic_preview(file, img){

//nefunguje
if(typeof(FormData) == "undefined"){
var formData = [];
formData.push('image', file);}
//nefunguje

else{
var formData = new FormData();
formData.append('image', file.files[0]);}

var httpRequest = request();
httpRequest.open("POST", '?', true);
httpRequest.onreadystatechange= function(){
if (httpRequest.readyState == 4){
if(httpRequest.status == 200){img.src=httpRequest.responseText;}
else{
if(httpRequest.status != 0){alert(httpRequest.status +":"+ httpRequest.statusText);}}}}
httpRequest.send(formData);}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: