我正在将一个旧的 MS-DOS Foxpro 程序迁移到 cakePHP,但在应用程序过程的某些部分中,用户将有可能加载一个文本文件并根据一些业务逻辑对其进行处理。
我使用了算法,它运行良好,我用普通的 PHP 对其进行了编程。
但是在流程的某些部分,用户必须交互执行某些任务,在纯 PHP 中可以做到这一点。
我的问题是:
我如何在 MVC 框架上进行交互式文件处理,因为控制器在将控制权交给视图时已经处理了数据。?
jQuery-ajax 能帮上忙吗?
你怎么看?
问候
更新
正如 Borislav Sabev 指出的那样,我这样做:
使用以下方法创建文件上传:jQuery Form Plugin
根据上传文件的数据结构解析的 PHP 文件,以 JSON 格式向客户端返回文件的解析内容。
然后通过 ajax POST 发送 JSON 数据进行处理
$.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 等待用户输入然后继续处理?
顺便说一句:这是我使用的 $.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>');
}
});