2015-04-02 21 views
0

輸入的值應該在每次按鍵時動態驗證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'; 
    } 
} 

我沒有看到劇本呼應從控制檯東西。該變量沒有發佈。

+2

這是什麼網址? – 2015-04-02 07:46:46

+0

你需要發佈到一個實際運行web服務器並處理php的url。以'http'開頭的東西... – jeroen 2015-04-02 07:53:10

+0

它仍然無法正常工作。對不起,我不得不在你的評論後修改我的網址。 – 2015-04-02 07:53:42

回答

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什麼,你將必須實現在您.done()回調在你的JS,如:

.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」,而不是「成功」。

+0

我將路徑更改爲相對路徑,現在請求的結果爲200.但它仍未驗證。你看到PHP腳本有什麼問題嗎? – 2015-04-02 08:15:48

+0

由於某種原因,不能正常工作。該字段不會變成綠色。更改爲'in_array'函數,現在它正在工作。 – 2015-04-02 08:55:39

+0

@StevensHaen如果您發現我的答案可以解決您的問題,請點擊左側的「檢查」標記以接受答案。它將標記回答的問題,不留在搜索結果中,但尚未解決的問題。 – yergo 2015-04-13 07:11:16

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

此行必須爲url。你寫了服務器文件路徑。

.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'; 
    } 
} 

and 如果您在成功區域添加中斷,性能升級。或者你可以使用in_array函數。

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

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