我正在努力实现这个目标: php表单。 jquery formsubmit。提交表单时 - 正在重定向用户 代码:
$( document ).ready(function() {
$('#submit').click(function(e){
$("form").submit();
window.location.href = '<?=$http_path?>/usr/checkout_invoice';
e.preventDefault();
return false; });
});
它提交代码(当redrect关闭时)或重定向但从未按预期执行两项操作。
我错过了什么????
更新
还好。下面的好伙伴建议使用AJAX。对于那些感兴趣的人来说,这是一个解决方案(有效):
$( document ).ready(function() {
$('#shipping_ok').bind('click touchstart', function(e){
e.preventDefault();
var city = $('#city').val();
var province = $('#province').val();
var zip = $('#zip').val();
$.ajax({
type : 'POST',
url : '<?=$http_path?>/usr/ja.php',
data: {city : city,province : province,zip : zip},
success : function(data){
window.location.href = '<?=$http_path?>/usr/checkout_invoice';
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert ("Error Occured");
}
});
return false;
});
});
</script>
答案 0 :(得分:1)
关于它无效的原因。
表单提交是回发到服务器,他们将重新加载页面...(通常是相同的URL)
由于javascript与页面绑定,当您提交表单时,会向服务器发出请求,并返回响应。
此时,它开始用新的响应页面替换当前页面。
新的回复页面对之前发生的事情一无所知。
这会重新加载javascript并有效地清除任何javascript, 正在执行或将要在页面上执行。
所以...
$("form").submit();
//page is reloaded from server... loosing content of any javascript.
//anything below wont happen
---------------------
//window.location.href = '<?=$http_path?>/usr/checkout_invoice';
javascript窗口位置不会发生...正在重新加载页面,重新加载时, 它不知道该页面是在javascript函数中...所以重定向不会发生。