输入的值应该转到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未发布。
答案 0 :(得分:3)
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
。完整的陈述也应该有效,但没有必要。
从脚本的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");
}
})
您的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}
})
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";
}