是否有一种“更清洁”的方式可以将MySQL值分配给jQuery变量?

时间:2016-09-13 09:01:33

标签: javascript php jquery html mysql

我正在创建一个基本的拍卖网站,并且有一个小问题,即在出价时,它有时会说它太低了,尽管它高于当前的出价。我认为这与我获得当前报价的方式有关,因为在我看来这不是一个非常整洁的方法。

所以我的HTML / PHP检索并列出页面上的拍卖:

    $result = mysqli_query($con,"SELECT * From auction WHERE category = 'Bathroom' ORDER BY ID DESC");


while($row = mysqli_fetch_array($result))
  {
    echo "<form name='auction' id='auction" . $row['ID'] . "'>
            <input type='hidden' name='id' value='" . $row['ID'] . "' />
            <div class='auction-thumb'>
                <div class='auction-name'>" . $row['Item'] . "</div>";
            echo "<img class='auction' src='" . $row['ImagePath'] . "' />";
            echo "<div class='auction-bid'>Current Bid: £<div class='nospace' id='" . $row['ID'] . "'>" . $row['CurrentBid'] . "</div></div>";
            echo "<div class='auction-bid'>Your Name: <input type='text' class='bidder' name='bidname' autocomplete='off'/></div>";
            echo "<div class='auction-bid'>Your Bid: <input type='text' class='auction-text' name='bid' autocomplete='off'/></div>";
            echo "<div class='auction-bid'><input type='submit' name='submit' value='Place Bid!' /></div>";
            echo "<div class='bid-success' id='bid" . $row['ID'] . "'>Bid placed!</div>";
    echo "</div></form>";

正如您所看到的,我将列/值“CurrentBid”包装在一个div中,其中包含MySQL中ID的ID。

然后当有人出价时,会调用以下jQuery / AJAX代码:

        $(document).ready(function(){
        $('form[name="auction"]').submit(function(){
            var id = $(this).find('input[name="id"]').val();
            var bidname = $(this).find('input[name="bidname"]').val();
            var bid = $(this).find('input[name="bid"]').val();
            var currentbid = $('#'+id).text();

            var itemdesc = $(this).find('.auction-name').text();

            if (bidname == '')
            {
                alert("No name!")
                return false;   
            }

            if (bid > currentbid)
            {
                alert("Bid is greater than current bid");   
            }
            else
            {
                alert("Bid is too low!");
                return false;   
            }

            $.ajax({
            type: "POST",
            url: "auction-handler.php",
            data: {bidname: bidname, bid: bid, id: id, itemdesc: itemdesc},
            success: function(data){
                $('#bid'+id).fadeIn('slow', function () {
                    $(this).delay(1500).fadeOut('slow');
                });
            }
        });
        return false;

        }); 
    });

从这段代码中可以看出,我通过选择div容器的ID来分配变量'currentbid',然后拉出其中的文本。

我不确定这是否是导致我这个问题的原因,但似乎很可能,我无法弄清楚为什么有时它会说“出价太低”,尽管我投入的价格高于目前的出价格。

理想情况下,我想直接从MySQL分配jQuery变量'currentbid',但我不太确定这是否可行。

有谁知道我可以这样做的方式?或者有更好的方法可以为变量赋值吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您现在正在比较字符串而不是数值。在比较之前,您应该将值转换为浮点数。

bid = parseFloat(bid)
currentbid = parseFloat(currentbid);

同样在服务器端处理出价时,您应首先检查数据库中的currentBid,因为它可能已经更改。