2016-11-24 6 views
0

Dies ist mein HTML und Javascript.Bild hochladen mit Javascript?

Ich versuche ein Bild mit Javascript hochladen.

Ich habe einige Beispiele mit jquery gefunden, aber ich habe gehofft, wenn diese Funktion unten geändert werden kann, um das gleiche zu tun.

Das Bild-Upload-Skript ist ein PHP-Skript, das funktioniert, wenn das Formular normal veröffentlicht wird, aber wenn diese Funktion unten verwendet wird, wird das Bild nicht an das PHP-Skript gesendet. $ _FILES ist leer. Wie kann ich diese Funktion ändern, um das Bild auch zu senden?

<html><head> 
<script type="text/javascript"> 

function jax( ){ 

    pd = document.getElementById("pd").innerHTML; 
    i = document.getElementById("i").value; 

    url= "ajax.php"; //?act=uploadPic&title=" + pd + "&i=" + i; 
    q="act=uploadPic&title=" + pd + "&i=" + i; 

    var ajaxRequest; 
    try{ 
     ajaxRequest = new XMLHttpRequest(); 
    } 
    catch (e){ 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e){ 
       alert("Your browser does not support ajax. Allow Active scriptting in internet settings."); return false; 
      } 
     } 
    } 
    ajaxRequest.onreadystatechange= function(){ 
     if(ajaxRequest.readyState == 4){ 
      r =ajaxRequest.responseText; 
      alert(r); 
     } 
    } 
    ajaxRequest.open("POST", url, true); 
    ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    ajaxRequest.send(q); 
}//func 

</script> 

</head> 
<body> 
    <form action="upload.php" method="post" enctype="multipart/form-data"> 
     <p> Title: <input type="text" name="pd" id="pd" value=" Title here " /> 
     <p> Image: <input type="file" name="i" id="i" /> 
     <p> <button onclick=" jax( ) "> Upload </button> 
    </form> 
</body> 
</html> 

Das PHP-Script, um zu überprüfen, ob Bild senden: ajax.php

<?php print_r($_FILES); ?> 

Antwort

0

dies meine Funktion ist, aber die Arbeit kann nicht niedriger als IE8:

function jax(){ 
     url= "ajax.php?act=uploadPic"; 
     var formData = new FormData(document.forms[0]); 
     var xhr = new XMLHttpRequest(); 
     xhr.open('post',url,true); 
     xhr.onreadystatechange = function(){ 
      if (xhr.readyState == 4) { 
       if (xhr.status == 200) { 
        console.log(xhr.responseText); 
       } 
      } 
     } 

     xhr.addEventListener('progress',function(e){ 
      if (e.lengthComputable) { 
       console.log(e.loaded+'/'+e.total); 
      } 
     },false); 
     xhr.send(formData); 
} 
+0

ich Diese Fehlermeldung in IE8: 'FormData' ist undefined & im firefox gibt es das Formular einfach so aus, als ob es eine Schaltfläche zum Absenden statt der Schaltfläche für den Ajax-Upload gäbe –