2016-06-03 6 views
1

Ich möchte nur sagen, dass Ajax und JQuery in meinem Kopf wirklich vage sind, also lerne ich immer noch. Allerdings verstehe ich ein wenig die Idee dahinter einfach nicht die Funktionalitäten im Detail.Ich sende eine Ajax Anfrage, aber ich bekomme keine Antwort von meiner .php Datei?

Mein Beispiel hier ist, dass ich diese Eingabetyp-Datei haben:

<input id="photo" type="file" capture="camera" accept="image/*"> 

Und ich versuche, einfach die Datei durch Ajax-Anfrage zu schicken. Hier ist mein Code:

$(document).ready(function() { 
    $("#photo").change(function() { 
      var file = $("#photo").prop('files')[0]; 
      var data = new FormData(); 
      data.append(file.name, file); 
      $.ajax({ 
       type: 'POST', 
       url: 'php.php', 
       processData: false, 
       contentType: false, 
       data: data, 
       success: function() { 
        alert("It was a success"); 
       }, 
       error: function(jqXHR, textStatus, errorThrown) { 
        console.log('jqXHR:'); 
        console.log(jqXHR); 
        console.log('textStatus:'); 
        console.log(textStatus); 
        console.log('errorThrown:'); 
        console.log(errorThrown); 
       } 
      }); 
     }); 

}); 

Alles scheint zu funktionieren, das Antwort-Status Ajax 200 zurück, aber ich fühle mich nicht wie es mit meinem PHP interagieren.

Hier ist meine php:

<?php 
    echo $_FILES['file']['type']; 
    echo "COME ON WORK"; 
?> 

Ist es möglich, dass es etwas mit Same Origin Policy zu tun hat? Ich schaute mich um und fand ähnliche Fragen.

+0

Was tatsächlich geschieht, wenn der Eingang geändert wird? Erhalten Sie den Erfolgsalarm? Was lässt dich denken, dass es nicht interagiert? – MCMXCII

+0

Grundsätzlich nichts, ich bekomme nur die Warnung "Es war ein Erfolg" und das ist es so ziemlich. Ich inspizierte die Konsole auch und keine Informationen kommt ... – antHak

+1

Wenn Sie Ajax verwenden, müssen Sie einen Wert für die Antwort zurück aus der PHP-Datei zuweisen. Versuchen Sie, Ihre Erfolgsfunktion wie folgt zu ändern: Erfolg: Funktion (xhr) {console.log (xhr);} Und dann überprüfen Sie die Konsole, um zu sehen, was zurückkommt. – MCMXCII

Antwort

2

Wenn Sie auf die echos beziehen, müssen Sie bzw. in Ihren Erfolg setzen

success: function(resp) { 
       alert("It was a success"); 
       alert("PHP echos:" + resp); 
      }, 
+1

ehrfürchtig bekommen können, das gibt mir das Echo zurück es versucht, Ausgabe von meinem php aber die erste Zeile in meinem 'echo $ _FILES ['Datei'] ['Typ'];' gibt mir einen Fehler: ** Undefinierter Index .... .... .. "** – antHak

+2

Formulare senden Daten basierend auf Namen nicht IDs, Datei als Name zu Ihrem Bild vielleicht hinzufügen? data.append (Datei.Name, Datei); was ist sein Name :)? –

+0

Es ist kein spezifischer Name, es basiert auf dem Bild, das ich auswähle. Aber ich habe versucht, meine 'Daten' zu serialisieren und ich werde undefiniert. Ich benutze 'alert (data.serialize);' – antHak

Verwandte Themen