2013-05-15 14 views
6

Ho cercato per le ultime ore di ottenere qualcosa ... qualcosa indietro dal pluploader al completamento della coda senza successo.Come restituire i dati tramite Ajax utilizzando Plupload on Upload Complete?

Ecco il mio codice JS:

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

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

}); 

Sulla ultima riga dello script upload.php, ho:

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

Questo ha senso per me ... ma non è funziona, i file vengono caricati senza problemi, ma l'avviso non si attiva nemmeno ... non c'è alcuna risposta.

Pensieri?

MODIFICA CON NUOVO CODICE come soluzione

Il JS che sto usando (grazie 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); 
}); 

sceneggiatura upload.php rimasto lo stesso, ultima riga di codice:

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

Fondamentalmente quando creo la riga della shell per associare le immagini allo script di caricamento, restituisco l'ID riga al modulo originale in un campo di input nascosto tramite l'evento FileUploaded associato all'oggetto plupload.

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

Funziona come un fascino!

+0

Se avete bisogno di più il codice per rispondere, per favore fatemelo sapere e vi posterò più! –

risposta

10

Diversi file potrebbero essere stati caricati come parte del processo di caricamento. Le risposte individuali non sono più disponibili quando sul palco UploadComplete. Se si desidera visualizzare informazioni su un caricamento di file specifico, è necessario associare l'evento FileUploaded anziché UploadComplete. Qualcosa di simile:

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

Spero che questo vi aiuterà

+1

Grazie - Darò uno scatto, ma sto cercando solo un pezzo di dati alla fine della submission su UploadComplete. Quando viene eseguito lo script uploader sto inserendo un record nel database per fungere da shell in modo da poter associare questi file caricati con qualcosa. Ho l'ID di questa shell che deve essere restituita al mio modulo originale. Lo userò per aggiornare la shell con i dati $ _POST nell'invio originale. Con questo pezzo di dati posso modificare una variabile nascosta sulla pagina originale e farla passare in $ _POST. Se hai altre intuizioni, è apprezzato! –

+0

@TonyMancini stai cercando di eseguire qualcosa di simile a questo http://stackoverflow.com/q/14786842/1236044? – jbl

+0

sì, sono vicino a eseguire questo senza la chiamata ajax aggiuntiva, e preferirei continuare sul percorso che sto facendo. Ho appena eseguito il tuo codice e ottenuto la risposta che stavo cercando - risposta accettata, grazie per il tuo aiuto !! –

0

hai provato eco invece di morire?

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

L'ho provato senza successo. Grazie. –

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

Sarebbe davvero utile se è possibile aggiungere una spiegazione alla risposta che hai fornito. – Lal