1

我文档头部的脚本:

<script>
  $(function () {
    $('form#ratingsform').on('submit', function (e) {
      $.ajax({
        type: 'post',
        url: '/dev/scripts/ratevideo_vibrary.php',
        data: $(this).serialize(),
        success: function () {
          alert('form was submitted');
        }
      });
      e.preventDefault();
    });
  });
</script>

我的 html 表单(注意,这是在 PHP 回显中):

<form id="ratingsform" action="/dev/scripts/ratevideo_vibrary.php" method="post">
    <input type="hidden" name="video_id" value="' . $friend_video_upload_id . '" />
    <input type="hidden" name="peep_id" value="' . $friend_id . '" />
    <input type="hidden" name="page" value="' . $_GET['page'] . '" />
    <div class="video-stars"><input id="imgstar" type="image" src="/dev/images/rate_video_icon.png" name="rating" value="1" border="0" /></div>
    <div class="video-stars"><input id="imgstar" type="image" src="/dev/images/rate_video_icon.png" name="rating" value="2" border="0" /></div>
    <div class="video-stars"><input id="imgstar" type="image" src="/dev/images/rate_video_icon.png" name="rating" value="3" border="0" /></div>
</form>

这是位于 /dev/scripts/ratevideo_vibrary.php 中的脚本:

<?php
require('password.php');
require('config.php');
require('checklogin.php');
$mysqlicon = mysqli_connect($db_host, $db_username, $db_password, $db_name);
//identify the user by comparing tokens
$find_user_id = mysqli_query($mysqlicon, "SELECT * FROM logins WHERE token='$storedtoken'");

//grab the user's UUID
while ($row = mysqli_fetch_array($find_user_id)) {
    $uuid = $row['user'];
}

$videoID = $_POST['video_id'];
$peep_id = $_POST['peep_id'];
$page = $_POST['page'];
$rating = $_POST['rating'];

//check if the user already rated this video
$find_if_user_rated_video = mysqli_query($mysqlicon, "SELECT ID FROM videoRatings WHERE videoID = '$videoID' AND raterID = '$uuid'");
if (mysqli_num_rows($find_if_user_rated_video) > 0) {
    header ('Location: /dev/vibrary/vibrary_iseeyou_alleyes.php');
    mysqli_close($mysqlicon);
    exit();
}

//add the rating
mysqli_query($mysqlicon, "INSERT INTO videoRatings VALUES ('', '$videoID', '$uuid', '$rating')");

mysqli_close($mysqlicon);
?>

单击任何“视频明星”提交表单时,表单运行正常,但它重定向到 ratevideo_vibrary.php 并且不在同一页面上运行。这是我第一次使用 AJAX 来解决这个问题,所以我确定我在这里遗漏了一些明显的东西。另请注意:此表单在页面上出现多次(用于多个视频)。

4

2 回答 2

0

在 ajax 脚本之前移动preventDefault()并删除操作事件(您根本没有使用操作 url,而是在提交表单时执行 javascript)。

更新:

将事件类型更改为 jquery 提交:

$('#ratingsform').submit(function (e) {
  e.preventDefault();
  $.ajax({
    type: 'post',
    url: '/dev/scripts/ratevideo_vibrary.php',
    data: $(this).serialize(),
    success: function () {
      alert('form was submitted');
    }
  });
})
于 2013-11-05T02:28:47.583 回答
0

更改此行

 $('form#ratingsform').on('submit', function (e) {

 $('#ratingsform').on('submit', function (e) {

然后改变

<form id="ratingsform" action="/dev/scripts/ratevideo_vibrary.php" method="post">

<form id="ratingsform" action="javascript:void(0)">

或者

<form id="ratingsform" action="#">
于 2013-11-05T00:56:17.007 回答