在渲染页面之前与数据库交叉检查

时间:2013-07-26 00:29:53

标签: php jquery ajax validation pdo

我试图在让这些数据更进一步之前,用数据库中的内容交叉检查一些值。

我有一张表格,并以此格式发布

pid, Name, size, category and qty.

我已经对qty进行了验证。

在我发布的那些数据中,我使用这些数据来查找database中的价格。我没有发布价格

因为我使用这些发布数据来查找某人可能想要用它们搞砸的价格,例如将类别或大小值更改为任何内容。如果他们这样做,它仍然会被发布,页面将呈现,它看起来像

Name:     qty:      unit price:         total item price:
size:

虽然这些表名显示NOTHING正在显示,这意味着该页面只是没有渲染。 我知道你们中的一些人可能会想“如果这个人弄乱了价值观,这是他们的错”,我完全赞同,但我仍然希望阻止页面呈现

如果发布的所有内容与具有该产品ID(Pid)的任何项目无关。

如何在其他页面中呈现之前使用ajax来验证它们?

我已经有一个看起来像

的ajax
$(document).ready(function(){
    $('#selected').hide();
    $('#button').click(function(){
        var pid = $('#pid').val();
        var size = $('#size').val();
         var qty = $('#Qty').val();
        var price = '\u00A3' + parseInt($('#pricetag').text().replace(/^\D/, ''), 10) * qty;
        if (!/^[1-9]\d?$/.test(Qty)){
            alert('Quantity should not be below 1 or null');
            return false; // don't continue
        } 
        else {
        $('#sprice').text(price);
        $('#ssize').text(size);
        $('#selected').slideDown();
        }
        $.ajax({
            url: 'cart.php',
            type: 'POST',
            data: { pid:pid, 
            size:size, 
            Qty:Qty, 
            Category:Category },
            success: function(data)
            {

            }
        });
    });
});

cart.php

是我将这些值发布到的地方。

我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

您想要求服务器查看数据是否有效。除了表单数据之外,我还会发一个标志告诉PHP这是AJAX验证,因此它可以从正常的表单提交中告诉AJAX帖子。

在PHP中,确定数据有效性后,它只能返回true或false。然后你的Javascript可以确定从那一点开始做什么。

但是,我认为还有其他方法可以解决这个问题。也许您不应该让用户修改这些字段,或者您可以发布表单,如果用户提交了无效数据,则再次呈现表单。另一种方法是限制用户可以做的选择,因此他们的输入始终有效。