【发布时间】:2019-01-14 09:53:02
【问题描述】:
在表单中更改数据远程不起作用,而更改操作则可以。
我正在处理一个需要首先通过对后端服务器执行POST 来检查有效性的表单。例如,表单操作是/action1,而data-remote 选项设置为true。
在成功调用 ajax 后,我将操作更改为 /action2 并将数据远程更改为 false,以便通过输入的字段值跳转到下一页。
我可以看到动作和数据远程都发生了变化,但是 POST 是作为 ajax 调用对新的 /action2 完成的,因此让我在同一页面上。
显然数据远程选项更改不起作用
$('form').bind('ajax:complete', function (evt, xhr, status) {
setTimeout(function () {
if (xhr.status === 200) {
// Submit to forms
$("#ds-form").attr('action','/action2').attr('data-remote','false').submit();
} else {
window.location = '/home';
}
}, 1100);
});
});
在检查器窗口中,我看到第一个 ajax 调用是如何完成的,并且调用成功返回。然后表单操作与数据远程选项一起更改。
然后它 POSTs 到新的 set 操作,但这作为 xhr 调用。
如果我在没有数据远程选项的情况下将表单更改为转到第二个操作 (/action2),它会按预期直接跳转到新页面。
【问题讨论】:
-
现在,我通过将表单 /action2 和 data-remote 设置为 false 来反转操作。然后在提交按钮 click() 事件上执行 ajax 调用来进行验证,如果成功,执行 form.submit()。它可以工作,但是更改 data-rmote 选项没有效果仍然很奇怪。
标签: jquery ruby-on-rails ajax