【发布时间】:2011-02-15 16:56:08
【问题描述】:
我问这个问题是因为我已经为nested inlines 实现了一个 javascript 解决方案(感觉有点像 hack,但当时似乎也是最简单和最快的解决方案......)这给了我一些意想不到的结果。
jQuery 向管理表单添加了额外的输入部分,普通表单提交将忽略(显然)所以我使用 jQuery forms plugin 就像这样
function ajaxSubmit(form) {
$(form).ajaxSubmit({
success: function() {
var item_data = $('.item-fields').fieldSerialize();
var post_url = '/admin/menu_generator/' + context + '/' + menu_id + 'items/new/';
$.post(post_url, item_data);
};
});
};
ajaxSubmit() 和 $(selector).ajaxSubmit 不同,命名错误,我很抱歉。
无论哪种方式,那段代码都会正常提交表单,成功后会执行第二个 POST 请求,该请求会处理 jQuery 添加的输入。 我认为,当 jQuery 输入需要数据库中尚未创建的内容时,这将防止出现问题。为清楚起见,举个例子:
用户可以创建部分,每个部分可以有许多项目。如果用户创建了一个新部分并添加了新项目,那么在没有先进行普通表单提交的情况下,该部分将不会在数据库中,因此也无法创建项目!
很遗憾,我的解决方案不起作用。即使在 ajaxSubmit 之后,直到完成所有 js 代码之后,新的部分实际上也没有记录在数据库中 - 这让我感到惊讶,也许有人可以告诉我为什么?可能只是表单插件不适合这个任务。
EDIT :: 我的代码中存在语法错误,这就是它不起作用的原因...正如您在上面的 sn-p 中看到的那样,成功函数的末尾有一个分号,这是破坏的东西。
【问题讨论】: