使用jQuery循环+更新DB


Loop through + update DB with jQuery

我一直在阅读和尝试不同的东西,但我似乎无法掌握Jquery的窍门。

上下文如下:使用PHP,我从数据库中随机获得十个项目。我按下了启动按钮,其中一项显示。然后,用户可以对项目进行评分(喜欢或不喜欢),结果会在数据库中更新,并显示下一个结果。在对十个项目进行评分后,应用程序会重置,您可以再次点击开始按钮重新开始。

现在,我还需要使用jQuery或javaScript来实现这一点,这样用户就不必一直刷新。我不知道如何开始。我知道你们都说"阅读文档",但老实说,我有,我只需要一些提示,这样我就能弄清楚。

按下启动按钮

<input type="submit" name="action" value="start" />

php文件中的变量填充此

<article>
<header>
<h1><?php echo $_SESSION['videos'][$_GET['id']]['title'].' - '. $first.'.'?></h1>
<h2>Originally by <?php echo $_SESSION['videos'][$_GET['id']]['artist'] ?></h2>
</header>
...
<video width="205" height="319"  controls>
<source src="assets/videos/<?php echo $_SESSION['videos'][$_GET['id']]['video'] ?>"type="video/mp4">
</video>

用这些按钮收费+重定向到10个阵列中的下一个随机项目

<input type="submit" name="action" value="like" />
<input type="submit" name="action" value="dislike" />

这一切都很好,但我如何让它与jQ/Js一起工作呢?我的想法是:将点击事件链接到开始按钮,防止默认。但后来呢?我需要从数据库中加载十个随机项,将第一个附加到正文中,然后在喜欢/不喜欢按钮中添加一个点击事件,防止默认值,并在不重新刷新的情况下更新数据库。

有人有什么建议吗?在这里挣扎。。。

感谢

这里是这类事情的基本流程,但您的实现可能会有所不同,但您需要

$('input[value="like"]').click(function(){
    var video_id = //however you want to supply video_id here
    $.post('likehandler.php',{id:video_id}, function(result){
        //result is just whatever likehandler.php echos to the screen (usually json_encoded data)
        //your php page would mark the video with the $_POST[id], and then grab a new random video 
        //result.next_video is a json_encoded object from your php page
        if(result.next_video){
            //if your ajax response contains a new video, remove the old, and replace it with the new
            $('video').remove();
            $('body').append("<video width... src='assets/videos/"+result.next_video.video+"' type...">);
        }
    }, 'json');
});
//possible example of likehandler.php
    <?php
        $video_id = $_POST['id'];
        //update video with one more vote in database
       $next_video = //get a random video from database
       echo json_encode(array("status"=>"success","next_video"=>$next_video));
    ?>

这绝对不是一个复制粘贴的答案,但它是基本的流程,可以为您指明它是如何工作的。