swfupload: как разобрать возвращаемые данные из скрипта upload.php?
Погуглил около часа, до сих пор не могу найти, как выполнить эту простую задачу!
upload.php заканчивается:
echo "FILEID:" . $randomid; // Return the file id to the script
теперь пытаюсь получить этот файл:
function uploadSuccess(serverData) {
alert(serverData);
}
Оповещения [объект Объект]. Документация не помогает вообще. Нет доступных примеров.
Пожалуйста помоги!
3 ответа
РЕШИТЬ! Это было намного проще. Почему я всегда считаю сложным? функция uploadSuccess(fileObject, serverData, response) { alert(serverData); }
Я использовал JSON с SWFUpload. Проблема чтения FILEID (предложение @Eric) заключается в том, что SWFUpload возвращает имя файла из загруженного файла (например, клиент загрузил "test.txt" на сервер, это имя возвращаемого файла). Это нормально, но если у вас есть PHP-скрипт, который переименовывает файлы (чтобы избежать замены), то имя файла на сервере - не "test.txt", если этот файл существует, а "test(2).txt".
В uploadSuccess
, я использовал:
.on('uploadSuccess', function(event, file, serverData){
var responseData = jQuery.parseJSON(serverData);
var upload_url_tmp = responseData["name"];
[...]
На стороне сервера я использовал:
$data = array('name' => $file);
echo json_encode($data);
Обратите внимание, что $file var - это имя файла, сохраненного на сервере (после переименования). Работал с PHP 5.4.9 и SWFUpload 2.2.0.1
Ну, во-первых, я думаю, что у вас неправильные параметры ввода uploadSuccess. Документация гласит: uploadSuccess(объект файла, данные сервера, полученный ответ) является правильной подписью.
Поэтому для начала вам нужно добавить несколько дополнительных параметров в ваш обратный вызов успеха:) Во-вторых, serverData - это то, что выводит ваш сервер. В вашем примере похоже, что ответ будет { "FILEID": "somerandomid" } (я предполагаю, что он возвращается как JSON, хотя, возможно, это ошибочное предположение)
В любом случае, чтобы получить доступ к случайно созданному идентификатору, вам просто нужно сделать
function uploadSuccess(fileObject, serverData, response){
alert(serverData.FILEID);
}
Кроме того, вы должны использовать Firebug, который является плагином для Firefox. Это позволит вам установить точку останова в функции обратного вызова и запросить serverData, чтобы точно узнать , что в ней.