通过jQuery更改操作后,表单提交到旧操​​作

时间:2013-09-10 03:22:05

标签: php javascript jquery submit form-submit

这似乎应该这么简单,但它不起作用。我正在做的是获取旧操作,向最后添加ID,并将表单操作设置为该操作。这是代码:

var action = $('#update-schedule-form').attr('action');
$('#update-schedule-form').attr('action', action + '/1');

我可以看到表单的操作在FireBug和Chrome的检查器中发生了变化。但是,当我单击提交按钮时,它仍然将其发送到原始操作。例如,它在代码中显示“/ controller / action / 1”,但提交到“/ controller / action”。任何想法在这里发生了什么?

更新

事实证明我正在使用的框架Yii存储了原始的表单操作地址,因为它是ajax验证例程。我没有在Firebug中看到表单提交,我看到验证尝试在提交之前验证表单。我不知道Yii在哪里存储它使用的URL或如何更改它(应该使用表单操作,但显然它不是),所以我只是修改了我的控制器并使ID参数可选。现在验证运行愉快,表单正确提交。

2 个答案:

答案 0 :(得分:2)

也许您应该尝试使用prop代替attr

var action = $('#update-schedule-form').prop('action');
$('#update-schedule-form').prop('action', action + '/1');

检查.prop() vs .attr()

的答案

答案 1 :(得分:1)

您是通过jQuery还是使用提交html按钮提交表单?尝试一种不同的提交方式。

另外,尝试以这种方式更新动作。

var action = jQuery('#update-schedule-form').get(0).getAttribute("action");
jQuery('#update-schedule-form').get(0).setAttribute('action', action + '/1');  

编辑:它可能是您的代码所在的位置,但如果没有错误,则很难说,这可能不是问题。