Я переношу старую программу MS-DOS Foxpro на cakePHP, но в некоторой части процесса приложения у пользователя будет возможность загрузить текстовый файл и обработать его в соответствии с некоторой бизнес-логикой.
Я работал над алгоритмом, и он работает нормально, я запрограммировал его на простом PHP.
Но в некоторых частях процесса пользователь должен взаимодействовать с выполнением некоторых задач, в простом PHP это возможно сделать.
Мой вопрос:
Как я могу создать интерактивный файловый процесс в среде MVC, поскольку контроллер обработал данные, когда он дает контроль над представлением?
Может помочь jQuery-ajax?
Как вы думаете?
С уважением
Обновить
Как указал Борислав Сабев, я делаю это:
Создайте загрузку файла с помощью: jQuery Form Plugin
Анализ файлов PHP по структуре данных загруженного файла, который возвращает клиенту анализируемое содержимое файла в JSON.
Затем данные JSON отправляются для обработки через ajax POST
$.each(data, function (i, fb) { callAJAX(fb); });
callAJAX просто отправьте запрос POST
function callAJAX(fb){ $.ajax({ type: 'POST', url: "proc.php", dataType:"json", complete: function(r,st){ }, success: function(r,st){ processError(r); }) }, async: false }); }
Если есть ошибка перевода, PHP возвращает клиенту сообщение об ошибке через JSON.
function proccessError(r) { $.each(r,function(i,d){ if (d['error'] == 1){ $.alert('Material not found in translation table','Error'); } }) }
Теперь большой вопрос:
Когда я открываю диалог $ .alert, я хочу, чтобы пользователь выбирал правильный материал с помощью автозаполнения, но код не ждет выбора пользователя и появляется другое окно $ .alert. Как я могу сказать jquery, чтобы ждать ввода пользователя, а затем продолжить обработку?
BTW: это расширение $ .alert, которое я использую:
$.extend({ alert: function (message, title) { $("<div></div>").dialog( { buttons: { "Ok": function () { $(this).dialog("close"); } }, close: function (event, ui) { $(this).remove(); }, resizable: false, title: title, modal: true }).text(message) .parents(".ui-dialog:eq(0)").wrap('<div class="error-w"></div>'); } });