首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

jQuery AJAX 實現無刷新驗證卡券:正確 POST 參數傳遞與回顯

     編輯:程式設計綜合問答

前端需在輸入框失去焦點或點擊按鈕時,以 AJAX 向後台驗證卡券代碼,並將結果即時顯示在提示區域。關鍵在於 正確序列化 POST 資料、指定 dataType: json、處理回應並更新 DOM。

修正後的前端代碼

<div class="contact-input">
    <label>兌換碼</label><br>
    <input type="text" name="codeno" id="codeno" />
    <input type="button" id="btnVerify" value="驗證" />
    <div id="checkResult"></div>
</div>

<script>
$(function() {
    $("#btnVerify").click(function() {
        var code = $("#codeno").val().trim();
        if (!code) { $("#checkResult").text("請輸入兌換碼"); return; }
        
        $.ajax({
            url: "checkCard.php",
            type: "POST",
            data: { codeno: code }, // 物件格式,jQuery 自動序列化為 application/x-www-form-urlencoded
            dataType: "json",       // 預期回應 JSON,自動解析
            success: function(resp) {
                if (resp.success) {
                    $("#checkResult").html("<span style='color:green'>" + resp.msg + "</span>");
                } else {
                    $("#checkResult").html("<span style='color:red'>" + resp.msg + "</span>");
                }
            },
            error: function(xhr, status, err) {
                $("#checkResult").text("請求失敗:" + err);
            }
        });
    });
    
    // 失去焦點自動驗證(可選)
    $("#codeno").blur(function() {
        if ($(this).val().trim()) $("#btnVerify").click();
    });
});
</script>

後端 PHP 範例

<?php
header('Content-Type: application/json; charset=utf-8');
$code = isset($_POST['codeno']) ? trim($_POST['codeno']) : '';

if (!$code) {
    echo json_encode(['success' => false, 'msg' => '參數缺失']);
    exit;
}

// 模擬驗證邏輯
$valid = ($code === 'VALID123'); // 實際查資料庫
echo json_encode([
    'success' => $valid,
    'msg' => $valid ? '驗證通過,卡券有效' : '卡券代碼無效或已過期'
]);
?>

常見錯誤與修正

錯誤寫法問題修正
data: "codeno="+$("#codeno").val()手動拼字串,特殊字元未編碼data: { codeno: $("#codeno").val() }
$.post("url?param=val", ...)查詢字串參數屬 GET,$_POST 取不到將參數放在 data 物件中
$('check').innerHTML+=msg選取器缺 #,innerHTML 是 DOM 屬性非 jQuery 方法$("#check").html(msg) 或 .text(msg)
未設定 dataType回應視為字串,需手動 JSON.parsedataType: "json"

進階建議

  • 加入防抖:連續輸入時延遲 300ms 發請求,減少伺服器壓力。
  • 驗證碼/限流:防止惡意遍歷卡券代碼。
  • 統一錯誤碼:前後端約定 {code: 200, data:..., msg:...} 格式。

遵循標準 AJAX 參數傳遞與 JSON 回應格式,能快速構建穩定的無刷新驗證功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved