2013-05-15 10 views
6

Próbowałem przez ostatnie kilka godzin, aby uzyskać coś ... wszystko z powrotem od pluploader po zakończeniu kolejki bez skutku.Jak mogę zwrócić dane przez Ajax przy użyciu Plupload po zakończeniu przesyłania?

Oto mój kod JS:

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

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

}); 

Na ostatniej linii skryptu upload.php, mam:

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

to sens do mnie ... ale to nie jest działa, pliki ładują się bezproblemowo, ale alarm nawet się nie uruchamia ... nie ma żadnej odpowiedzi.

Myśli?

EDIT z nowymi KOD jako rozwiązanie

JS że używam (dzięki 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 scenariusz pozostał taki sam, ostatni wiersz kodu:

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

Tak więc po utworzeniu wiersza powłoki w celu skojarzenia obrazów w skrypcie przesyłania przekazuję identyfikator wiersza z powrotem do pierwotnej postaci do ukryte pole wejściowe za pośrednictwem zdarzenia FileUploaded, które jest powiązane z obiektem plupload.

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

Działa jak urok!

+0

Jeśli potrzebujesz więcej kodu odpowiedzieć, proszę dać mi znać i będę pisać więcej! –

Odpowiedz

10

W ramach procesu przesyłania można było przesłać kilka plików. Odpowiedzi jednostek nie są już dostępne, gdy są na etapie UploadComplete. Jeśli chcesz wyświetlić informacje o konkretnym przesyłaniu plików, powinieneś powiązać ze zdarzeniem FileUploaded zamiast UploadComplete. Coś jak:

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

nadzieję, że to pomoże

+1

Dziękuję - zrobię to, ale szukam tylko jednego kawałka danych pod koniec przesyłania na UploadComplete. Kiedy działa skrypt przesyłający, wstawiam rekord do bazy danych, aby działał jak powłoka, dzięki czemu mogę powiązać te przesłane pliki z czymś. Mam identyfikator tej powłoki, która musi zostać przekazana do mojej pierwotnej postaci. Użyję go do aktualizacji powłoki z danymi $ _POST w oryginalnym zgłoszeniu. Za pomocą tego fragmentu danych mogę zmienić ukrytą zmienną na oryginalnej stronie i przekazać ją w $ _POST. Jeśli masz inny wgląd, jest to doceniane! –

+0

@TonyMancini próbujesz wykonać coś podobnego do tego http://stackoverflow.com/q/14786842/1236044? – jbl

+0

Tak, jestem blisko wykonywania tego bez dodatkowego wywołania ajax, a ja wolałbym kontynuować na ścieżce, na której jestem. Właśnie uruchomiłem twój kod i otrzymałem odpowiedź, której szukałem - odpowiedź zaakceptowana, dziękuję za pomoc !! –

0

czy próbowałeś echa zamiast umrzeć?

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

Próbowałem tego bez powodzenia. Dzięki. –

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

Byłoby naprawdę pomocne, jeśli możesz dodać wyjaśnienie do udzielonej odpowiedzi. – Lal

Powiązane problemy