【发布时间】:2013-10-31 12:12:54
【问题描述】:
我正在将一个旧的 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>');
}
});
【问题讨论】:
-
“在普通的 PHP 中可以做到”然后任何 php 框架都可以,但是您的要求还不够清楚,无法进一步评论。
-
要处理的文件有一长串 cad 数据,按行排列,我将文件作为 CSV 文件处理。在处理文件时,算法会从 cad 术语转换为内部符号系统,但有时 cad 文件包含的定义不在转换表中,然后要求用户手动选择适当的值。我在控制器上编写了算法,但我不知道如何通过视图与用户交互,因为视图显示了控制器上的方法或操作的结果。
标签: php jquery ajax file-processing