Php preventDefault()导致提交的表单重定向到其他页面?
我有一个带有以下表单的产品页面:Php preventDefault()导致提交的表单重定向到其他页面?,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我有一个带有以下表单的产品页面: <form id="ratingsForm" action='../resources/add_rating_to_product.php' method="POST"> <input type="hidden" name="productID" value="<?php echo $productID; ?>" /> <span class="rating"> <input
<form id="ratingsForm" action='../resources/add_rating_to_product.php' method="POST">
<input type="hidden" name="productID" value="<?php echo $productID; ?>" />
<span class="rating">
<input type="radio" class="rating-input"
id="rating-input-1-5" name="rating" value="5">
<label for="rating-input-1-5" class="rating-star"></label>
...
<input type="radio" class="rating-input"
id="rating-input-1-1" name="rating" value="1">
<label for="rating-input-1-1" class="rating-star"></label>
</span>
</form>
我有另一个javascript文件,它将在表单提交时触发,并使用ajax将其发布到正确的文件中
$(document).ready( function() {
$("#ratingsForm").on("submit",function(e){
e.preventDefault();
$.ajax( {
type: "POST",
url: $(this).attr( 'action' ),
data: $(this).serialize(),
success: function( response ) {
alert('Thanks for rating');
}
});
})
});
向产品添加评级只需获取发布的信息并将其插入数据库
我遇到的问题是,
e.preventDefault
将我重定向到搜索页面,而不是阻止和重定向。我已经检查了我产品页面中的所有代码,但没有任何东西可以将我重定向到那里,那么问题出在哪里?如果没有preventDefault()
,它会按预期重定向到add_rating_to_product.php
。在调用成功函数后,您可以使用
$(this).unbind('submit').submit()
,这将允许执行继续,就像preventDefault被调用一样
$(document).ready(function() {
$('input[name=rating]').change(function(e){
e.preventDefault();
var prodID = $(this).find("input[name='productID']").val();
$.ajax( {
type: "POST",
url: $(form#ratingsForm).attr( 'action' ),
data: {$('form#ratingsForm').serialize(), prodID: prodID},
success: function( response ) {
alert('Thanks for rating');
}
});
});
});
只需在一个函数中进行初始化并将其发送到服务器端。我希望这能奏效。您的页面上是否有其他表单?如果您这样做,以下代码将提交页面上的所有表单:
$(document).ready(function() {
$('input[name=rating]').change(function(){
$('form').submit();
});
});
我认为这样做更安全:
$(document).ready(function() {
$('input[name=rating]').change(function(){
$(this).closest('form').submit();
});
});
但是使用这种方法,productID不会被发布吗?我将如何解决这个问题?它将进入服务器,因为它在formI中。我刚刚尝试了它,serialize现在只获取输入值,而不再获取产品id。@aldrin27该操作将决定将用户发送到何处以及在该php文件中使用,它可以通过php重定向将用户发送到他们想去的任何地方。标题('Location:someting.php');是的,就是这样。非常感谢。
$(document).ready(function() {
$('input[name=rating]').change(function(){
$(this).closest('form').submit();
});
});