我有一个产品页面,我正在尝试实施评级系统。
每个产品页面都有以下信息:
productID - 产品的ID
用户 - 登录用户的用户名
我有星级评分的以下HTML:
<fieldset id='ratingStars' class="rating">
<input class="stars" type="radio" id="star5" name="rating" value="5" />
<label class = "full" for="star5" title="Incredibly Powerful - 5 stars"></label>
...
<input class="stars" type="radio" id="star1" name="rating" value="1" />
<label class = "full" for="star1" title="Unusable - 1 star"></label>
</fieldset>
我有一个javascript文件,当点击其中一个星星时调用它,它调用一个PHP文件,它将连接到数据库并将评级添加到产品中:
$(document).ready(function () {
$("#ratingStars .stars").click(function () {
$.post('../resources/add_rating_to_product.php',{rate:$(this).val()},function(){
});
});
});
PHP文件只是连接到数据库并将评级插入评级表。它希望POST用于用户名,产品和评级的数据。
也许这是一个愚蠢的问题,但如何从javascript文件中发布该数据呢?我理解如何获得评级,因为被点击的对象,但如果他们不在PHP文件的范围内,我如何发送其他2。我该如何安全地做到这一点?
我很可能认为这一切都是错的,所以感谢任何帮助!
答案 0 :(得分:1)
您可以序列化表单并使用onSubmit事件处理程序。没有测试过代码。
考虑以下形式:
<form id="ratingsForm" action="../resources/add_rating_to_product.php" method="POST">
<input type="radio" name="rating" value="5" />
<input type="radio" name="rating" value="1" />
<input type="hidden" name="productId" value="<?php echo $productId; ?>" />
<input type="submit" name="submit" value="submit" />
</form>
您可以使用事件处理程序序列化表单数据并使用AJAX发布它。
$(document).ready( function() {
$("#ratingsForm").on("submit", function(){
$.ajax( {
type: "POST",
url: $(this).attr( 'action' ),
data: $(this).serialize(),
success: function( response ) {
console.log( response );
}
} );
});
} );