变量未发布在密钥上

时间:2015-04-02 07:45:50

标签: javascript php jquery

输入的值应该转到PHP,以便在每次击键时动态验证。 JS:

    $("#coupon-code").on('keyup', function () {
            var coupon = $("#coupon-code").val();
            $.ajax({
                url:"C:/xampp/htdocs/lessdoing/lessdoinglive.com/checkout/page-2/full-pay/coupons/coupons.php",
                type: "POST",
                data: {coupon: coupon}
            }).done(function (data) {
                if (data === "success") {
                    $('#coupon-code').css("background-color", "green");
                }
                else {
                    $('#coupon-code').css("background-color", "red");
                }
            })
        });

PHP:

$coupons = array("foobar", "coupon");

foreach($coupons as $coupon) {
    if ($_POST["coupon"] === $coupon) {
        echo "success";
    } else {
        echo 'invalid';
    }
}

我没有看到脚本回显控制台中的任何内容。变量insn未发布。

2 个答案:

答案 0 :(得分:3)

1。网址

url:"C:/xampp/htdocs/lessdoing/lessdoinglive.com/checkout/page-2/full-pay/coupons/coupons.php"

它实际上不是由您的Web服务器处理的URL。文件是由浏览器从文件系统打开的,什么都不做,因为它不是通过php预处理器推送的。它必须是正确的URI,比方说,如果您可以使用http://127.0.0.1/lessdoing/checkout/page-2/full-pay/coupons/coupons.php访问您的网站,则您的网址应为/lessdoing/checkout/page-2/full-pay/coupons/coupons.php。完整的陈述也应该有效,但没有必要。

2。控制台

中没有回音

从脚本的PHP部分运行在服务器端,浏览器控制台中没有回显。要在浏览器中添加echo任何内容,您必须在JS的.done()回调中实现该功能,例如:

.done(function (data) {
    console.log(data);
    if (data === "success") {
        $('#coupon-code').css("background-color", "green");
    }
    else {
        $('#coupon-code').css("background-color", "red");
    }
})

3。发布POST

您的JS脚本当前没有发送PHP识别并压缩到$_POST数组的格式。此修复很快,您需要dataType: 'html'

$.ajax({
    url:"/lessdoing/lessdoinglive.com/checkout/page-2/full-pay/coupons/coupons.php",
    type: "POST",
    dataType: 'html',
    data: {coupon: coupon}
})

4。 PHP升级

if(in_array($_POST["coupon"], $coupons)) echo "success";
else echo "invalid";

正如在其他答案中一样,很难,但 MAY 是一种情况,当你在你的$coupons数组中放两次优惠券并产生" successsuccess"而不是"成功"。

答案 1 :(得分:2)

url:"C:/xampp/htdocs/lessdoing/lessdoinglive.com/checkout/page-2/full-pay/coupons/coupons.php",

此行必须是网址。您编写了服务器文件路径。

.done(function (data) {
alert(data);
                if (data === "success") {
                    $('#coupon-code').css("background-color", "green");
                }
                else {
                    $('#coupon-code').css("background-color", "red");
                }
            })

如果添加警报功能,则可以看到数据变量值。

$coupons = array("foobar", "coupon");

foreach($coupons as $coupon) {
    if ($_POST["coupon"] === $coupon) {
        echo "success";
break;
    } else {
        echo 'invalid';
    }
}

和 如果在成功区域中添加break,则性能会升级。或者你可以使用in_array函数。

$coupons = array("foobar", "coupon");

if (in_array($_POST["coupon"], $coupons)) {
   echo "success";
} else {
   echo "invalid";
}