2013-05-15 6 views
6

Ich habe in den letzten paar Stunden versucht, etwas ... etwas zurück von der pluploader nach der Fertigstellung der Warteschlange ohne Erfolg zu bekommen.Wie gebe ich Daten über Ajax mit Hilfe von Plupload beim Hochladen abgeschlossen zurück?

Hier meine JS-Code ist:

var uploader = $('#pluploadDiv').pluploadBootstrap(); 

uploader.bind("UploadComplete", function(up, files) { 
    var obj = $.parseJSON(response.response); 
    alert(obj.result); 

}); 

Auf der letzten Zeile des upload.php Skript, ich habe:

die('{"jsonrpc" : "2.0", "result" : "'.$_REQUEST['unitID'].'", "id" : "id"}'); 

Das macht Sinn für mich ... aber es ist nicht funktioniert, laden die Dateien ohne Probleme hoch, aber der Alarm wird nicht ausgelöst ... es gibt keine Antwort.

Gedanken?

EDIT MIT NEUEN CODE als Lösung

Die JS, die ich verwende (dank jbl):

var uploader = $('#pluploadDiv').pluploadBootstrap(); 

uploader.bind('FileUploaded', function(upldr, file, object) { 
    var myData; 
    try { 
     myData = eval(object.response); 
    } catch(err) { 
     myData = eval('(' + object.response + ')'); 
    } 
    $("#vehicle_id_value").val(myData.result); 
}); 

upload.php Skript gleich geblieben, letzte Zeile Code:

die('{"jsonrpc" : "2.0", "result" : "'.$_REQUEST['unitID'].'", "id" : "id"}'); 

Also im Grunde, wenn ich die Shell-Zeile erstellen, um Bilder im Upload-Skript zu verknüpfen, übergebe ich die Zeilen-ID zurück zum ursprünglichen Formular in ein verstecktes Eingabefeld über das FileUploaded-Event, das an das plupload-Objekt gebunden ist.

<input type="hidden" name="vehicle_id_value" id="vehicle_id_value" value="" /> 

Funktioniert wie ein Charme!

+0

helfen Wenn Sie mehr Code beantworten müssen, lassen Sie es mich wissen, und ich werde mehr schreiben! –

Antwort

10

Im Rahmen des Hochladevorgangs konnten mehrere Dateien hochgeladen worden sein. Die Antworten der einzelnen Personen sind nicht mehr verfügbar, wenn sie sich auf der Stufe UploadComplete befinden. Wenn Sie Informationen zu einem bestimmten Dateiupload anzeigen möchten, sollten Sie statt UploadComplete an das Ereignis FileUploaded binden. Etwas wie:

uploader.bind('FileUploaded', function(upldr, file, object) { 
    var myData; 
    try { 
     myData = eval(object.response); 
    } catch(err) { 
     myData = eval('(' + object.response + ')'); 
    } 
    alert(myData.result); 
}); 

Hoffnung wird diese

+1

Vielen Dank - Ich werde dies eine Chance geben, aber ich suche nur nach einem Teil der Daten am Ende der Einreichung auf UploadComplete. Wenn das Uploader-Skript ausgeführt wird, füge ich einen Datensatz in die Datenbank ein, um als Shell zu fungieren, damit ich diese hochgeladenen Dateien mit etwas verbinden kann. Ich habe die ID dieser Shell, die an meine ursprüngliche Form zurückgegeben werden muss. Ich werde es verwenden, um die Shell mit den $ _POST-Daten in der ursprünglichen Vorlage zu aktualisieren. Mit diesem Datenelement kann ich eine versteckte Variable auf der ursprünglichen Seite ändern und sie in $ _POST übergeben. Wenn Sie andere Einblicke haben, ist es geschätzt! –

+0

@TonyMancini versuchen Sie, etwas ähnliches zu diesem http://stackoverflow.com/q/14786842/1236044 durchzuführen? – jbl

+0

Ja, ich bin kurz davor, dies ohne den zusätzlichen Ajax-Anruf auszuführen, und ich würde es vorziehen, den Weg fortzusetzen, auf dem ich bin. Ich habe gerade Ihren Code ausgeführt und die Antwort erhalten, die ich gesucht habe - Antwort akzeptiert, danke für Ihre Hilfe !! –

0

hast du versucht echo anstelle von sterben?

echo '{"jsonrpc" : "2.0", "result" : "'.$_REQUEST['unitID'].'", "id" : "id"}'; 
+0

Ich hatte das ohne Erfolg versucht. Vielen Dank. –

0
uploader.bind('FileUploaded', function (up, file, res) { 
    var res1 = res.response.replace('"{', '{').replace('}"', '}'); 
    var objResponse = JSON.parse(res1); 
    alert(objResponse.fn); 
}); 
+0

Es wäre wirklich hilfreich, wenn Sie der Antwort, die Sie zur Verfügung gestellt haben, eine Erklärung hinzufügen können. – Lal

Verwandte Themen