php - jquery onclick 中的 ajax post

标签 php jquery html ajax

我有一个按钮,它调用一个模式框淡入屏幕,说一个从按钮发布的值然后淡出,这使用 jquery 工作正常,但我也希望在相同的点击上从按钮发送的值是发布到一个 php 函数,该函数运行并且模式框仍然淡入淡出。

我只有这个让我的网站知道要使用什么 js:

 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>

我还是个新手,很抱歉问了一个菜鸟问题,但这会允许 ajax 运行,还是仅适用于 jquery?

我正在尝试的当前脚本是:(根据回复进行编辑以正确形成,但现在什么也没有发生)

<script>
$('button').click(function() 
{

    var book_id = $(this).parent().data('id'),
    result = "Book #" + book_id + " has been reserved.";

    $.ajax
    ({ 
        url: 'reservebook.php',
        data: "book_id="+book_id,
        type: 'post',
        success: function()
        {
            $('.modal-box').text(result).fadeIn(700, function() 
            {
                setTimeout(function() 
                {
                    $('.modal-box').fadeOut();
                }, 2000);
            });
        }
    });
});
</script>

尽管如此,模态框甚至不会出现。

php 是,resersebook.php:

<?php

session_start();

$conn = mysql_connect('localhost', 'root', '');
        mysql_select_db('library', $conn);

    if(isset($_POST['jqbookID']))
    {
        $bookID = $_POST['jqbookID'];

        mysql_query("INSERT INTO borrowing (UserID, BookID, Returned) VALUES ('".$_SESSION['userID']."', '".$bookID."', '3')", $conn);
    }

?>

为了彻底,按钮是:

<div class= "obutton feature2" data-id="<?php echo $bookID;?>"><button>Reserve Book</button></div>

我是新手,我在这里查看了许多其他类似的问题,这就是我获得当前脚本的方式,但它就是行不通。

不确定这是否重要,但是只有模态框有效的脚本必须位于 html 主体的底部才能工作,不确定是否由于某种原因 ajax 需要位于顶部,但是模​​态盒子行不通,只是一个想法。

最佳答案

试试这个。编辑为最终答案。

按钮:

<div class= "obutton feature2" data-id="<?php echo $bookID;?>">
    <button class="reserve-button">Reserve Book</button>
</div>

脚本:

<script>
$('.reserve-button').click(function(){

    var book_id = $(this).parent().data('id');

    $.ajax
    ({ 
        url: 'reservebook.php',
        data: {"bookID": book_id},
        type: 'post',
        success: function(result)
        {
            $('.modal-box').text(result).fadeIn(700, function() 
            {
                setTimeout(function() 
                {
                    $('.modal-box').fadeOut();
                }, 2000);
            });
        }
    });
});
</script>

reservebook.php:

<?php
session_start();

$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('library', $conn);

if(isset($_POST['bookID']))
{
    $bookID = $_POST['bookID'];

    $result = mysql_query("INSERT INTO borrowing (UserID, BookID, Returned) VALUES ('".$_SESSION['userID']."', '".$bookID."', '3')", $conn);

    if ($result)
        echo "Book #" + $bookId + " has been reserved.";
    else
        echo "An error message!";
}
?>

PS#1:对 mysqli 的更改对您的代码影响很小,但强烈建议这样做。

PS#2:Ajax 调用的成功 并不意味着查询 成功。仅表示 Ajax 事务正确进行并得到满意的响应。这意味着,它向 url 发送了正确的数据,但 url 并不总是做正确的事情。

关于php - jquery onclick 中的 ajax post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20543722/

相关文章:

javascript - 表格行文本突出显示弹出窗口(仅)我

javascript - JavaScript 可以使用多少内存?

html - css网格如何计算行自动高度?

php - 如何重写这个 php filterArray 函数以获得更好的性能

php - 从单选按钮输入到 php,然后添加到数据库

php - 上传 PHP 后修复 iOS 图片方向

javascript - 单击热图和鼠标坐标! - Javascript

javascript - struts - 文本区域只允许3行输入,每行40个字符的长度?

html - 使用 CSS 垂直对齐

php - 如何获取新插入行的id?