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();
     });
});