windows.location.href在POST中更改结果,期待GET

时间:2012-03-08 18:20:10

标签: javascript html post get onclick

从两个不同按钮的onclick事件调用以下方法:

this.changeSearch = function(obj, $tag) {
    var url = jQuery('#admin_url').val() + '/tools.php?page=cemeteriat&cempage=' + $tag;
    window.location=url;
    return;
};

在一个实例中,无论是否填充表单,按下按钮都会产生预期的GET调用。另一方面,如果填充表单,而不是GET到预期的URL,则对表单的action属性中指定的url执行POST。什么...

我已经跟踪了代码,两次上面的URL被分配了相同的值!我尝试过使用document.location,window.location和window,location.href,但没有改变行为。似乎不是浏览器特定的。

什么可能导致windows.location的分配导致窗体的POST而不是预期的GET?

1 个答案:

答案 0 :(得分:3)

这是因为你的一个按钮是表单的提交按钮,所以它已经被提交了,而且它从来没有真正找到你要显示的代码。

您应该挂钩表单的提交事件并调用event.preventDefault();您无法阻止从提交按钮的点击处理程序提交表单。

或者,您可以使按钮不属于提交类型。

另一种选择是处理提交事件并从提交处理程序更改表单以指向正确的提交URL和提交方法