file upload - json response
привет всем.
пол-пятницы искал, и так и не нашел, как взять ответ сервера при file upload? вот пример из доки http://dev.sencha.com/deploy/ext-4.0...file-upload.js конкретно файл грузит вот эта шняга form.submit({ url: 'file-upload.php', waitMsg: 'Uploading your photo...', success: function(form, action) { msg('Success', 'Processed file "' + o.result.file + '" on the server'); } }); но ни в form, ни в action нет никаких упоминаний о серверном response, хотя все гугл-советы на эту тему упорно твердят, что action должен иметь action.response если кто сталкивался, подскажите, плиз, как при сабмите формы, поймать ответ сервера (json, если это важно). заранее спасибо |
У вас функция получает второй аргумент action, а выводит на экран o.
Код там на самом деле такой: buttons: [{ text: 'Save', handler: function(){ var form = this.up('form').getForm(); if(form.isValid()){ form.submit({ url: 'file-upload.php', waitMsg: 'Uploading your photo...', success: function(fp, o) { msg('Success', 'Processed file "' + o.result.file + '" on the server'); } }); } } } JSON с сервера приходит. Добыть его можно через action.result, как видно из примера, а не через action.response. Подробнее об опциях submit в документации |
спасибо за ответ.
забыл написать в старте. версия 5.1.1.451. нет result во втором параметре success: function(... прямо сейчас продолжаю рыть это дело, и все больше склоняюсь к мысли переписать серверную часть этого дела, потому что не понимаю, как ответ сервера обработать. |
разобрался.
некоторое время назад была бага, с загрузкой файлов в FF. остался код фикса в корне проекта. вот такой: //заплатка загрузки файла для фф. Ext.override(Ext.form.action.Submit,{ onSuccess: function(response) { var form = this.form, success = true, result = response; response.responseText = '{"success": true}'; form.afterAction(this, success); } }); с сервера идет код ошибки, но фикс перенаправлял все на success, а в success (настаиваю) нет action.response (Ext.versions.core 5.1.1.451). убрал фикс, как отразиться пока не знаю - тестировщики расскажут. :-) но вроде работает. в результате пошло правильно на failure, а в нем можно брать Ext.decode(action.response.responseText). вопрос остался. при upload file, как обработать ответ сервера, если ответ "200 ОК", но еще возвращается некий json? ...ничего нового не узнал, но голову поломал изрядно. :-( спасибо за ответы. |
Часовой пояс GMT +3, время: 15:17. |