Загрузка файла с помощью jqgrid в PHP - PullRequest
2 голосов
/ 28 мая 2010

Я пытаюсь осуществить загрузку файлов с помощью jqgrid (в проекте Zend Framework). jqgrid позволяет вам создать поле ввода типа «файл», но не включает ENCTYPE = «multipart / form-data».

Создатель рекомендует использовать другой плагин для загрузки файлов, в частности Ajax File Upload . Он говорит инициализировать его с помощью метода onInitializeForm(), но как именно это сделать, мне не ясно. Он говорит,

"Также, как я полагаю, вы можете использовать Ajax плагин для загрузки файлов и его инициализация только один раз в событии onInitializeForm. "

И это все для инструкций о том, как это сделать.

Что я сделал до сих пор: У меня есть форма редактирования jqgrid, отображающая поле ввода файла, и у меня есть все различные файлы плагинов на месте и загружаются правильно. Что я не могу понять, так это как получить отправленную форму для правильной загрузки файла (я думаю, я не могу понять, как «инициализировать плагин загрузки файла ajax с событием onInitializeForm»). Любые идеи с благодарностью.

Для чего это стоит, я могу заставить onInitializeForm запускать что-то простое, например, оповещение («тест»), но оно вызывает растущие числа каждый раз, когда вы загружаете сетку (например, ничего в первый раз, одно оповещение при следующей загрузке сетка, два предупреждения в следующий раз и т. д.).

1 Ответ

2 голосов
/ 08 октября 2011

Ответ таков:

<!-- Add your other js files like jQuery, jqGrid etc. -->
<script type="text/javascript" src="js/ajaxfileupload.js"></script>
<script language="javascript">
    $(function() {
        $(document).ready(function() {
            jQuery("#your_grid_id").jqGrid({
                url: 'your_url',
                datatype: 'json',
                mtype: 'post',
                pager: 'your_pager_id',
                colNames: ["Description", "File"],
                colModel: [{name: "desc", index: "desc", ... ... ...}, {name: "file_to_upload", index: "file_to_upload", edittype: "file", ... ... ...}]
            }).navGrid("#your_pager_id",{{... ... ...},{
                jqModal:true,closeAfterEdit: true,recreateForm:true,onInitializeForm : function(formid){
                    $(formid).attr('method','POST');
                    $(formid).attr('action','');
                    $(formid).attr('enctype','multipart/form-data');
                }, afterSubmit : function(response, postdata){
                       $.ajaxFileUpload({
                          url: 'your_file_url_where_upload_operates', 
                          secureuri:false,
                          fileElementId:'file_to_upload',
                          dataType: 'json',
                          success: function (data, status) {
                              alert("Upload Complete.");
                          }
                       });
                   }
                }},{
                jqModal:true,closeAfterAdd: true,recreateForm:true,onInitializeForm : function(formid){
                    $(formid).attr('method','POST');
                    $(formid).attr('action','');
                    $(formid).attr('enctype','multipart/form-data');
                }, afterSubmit : function(response, postdata){
                       $.ajaxFileUpload({
                          url: 'your_file_url_where_upload_operates', 
                          secureuri:false,
                          fileElementId:'file_to_upload',
                          dataType: 'json',
                          success: function (data, status) {
                              alert("Upload Complete.");
                          }
                       });
                   }
                }
            });
        });
    });
</script>

Я использовал recreateForm: true, чтобы при каждом добавлении или редактировании форма создавалась заново.

Если у вас еще есть проблемы, пожалуйста, не стесняйтесь спрашивать меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...