You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress的AJAX动作函数中使用jQuery实现手机号注册查重提示

WordPress AJAX表单手机号校验实现方案

核心问题说明:AJAX属于前后端异步通信,PHP侧输出的<script>标签只会作为字符串返回给前端JS回调,不会自动插入页面执行。正确实现逻辑为PHP仅返回状态标识,前端JS根据返回状态执行对应的DOM操作/弹窗逻辑。


1. PHP代码改造

替换原有AJAX处理函数,用WordPress内置wp_send_json返回结构化状态,不需要输出任何前端代码:

add_action('wp_ajax_zt_save_campain_form_data',function() {
    check_ajax_referer('title_send_nonce');
    if(empty($_POST['values'])){
        wp_send_json([
            'code' => 400,
            'msg' => '请求参数为空'
        ]);
    }
    $value = $_POST['values'];
    $which_form = $value[4]['value'];
    $register_mobiles = get_post_meta($which_form, 'register_mobiles_list',true);
    // 手机号/账号已注册判断
    if(in_array($value[1]['value'] , $register_mobiles) || in_array($value[2]['value'] , $register_mobiles)){
        wp_send_json([
            'code' => 400,
            'msg' => '该手机号或Instagram账号已注册'
        ]);
    }
    // 正常保存逻辑
    $camp_data=get_post_meta($which_form, 'campain_data',true);
    $last_code=get_post_meta($which_form, 'last_code',true);
    $last_code++;
    update_post_meta($which_form, 'last_code' , $last_code);
    $user_data= array(
        'name'=>$value[0]['value'], 
        'instagram_id'=>$value[1]['value'],
        'mobile'=>$value[2]['value'],
        'user_code'=>$last_code
    );
    array_push($register_mobiles,$value[1]['value']);
    array_push($register_mobiles,$value[2]['value']);
    update_post_meta($which_form, 'user_info_'.$last_code , $user_data);
    update_post_meta($which_form, 'register_mobiles_list' , $register_mobiles);
    wp_send_json([
        'code' => 200,
        'msg' => '注册成功',
        'user_code' => $last_code
    ]);
});

2. JS代码改造

调整回调逻辑,根据PHP返回的状态码执行对应前端操作,同时修复原有search方法的逻辑错误:

jQuery(document).ready(function($){
    $('form[name="contact-me"]').on('submit', function(e) {
        e.preventDefault();
        var form_data = $(this).serializeArray();
        $.post(zt_send_form_obj.ajax_url, {
            action: "zt_save_campain_form_data",
            _ajax_nonce: zt_send_form_obj.nonce,
            values: form_data
        }, function(res) {
            if (res.code == 200) {
                console.log("注册成功");
                // 可自定义成功后的操作:比如清空表单、跳转到成功页
            } else if(res.code == 400){
                console.log("已注册");
                // 执行你需要的提示逻辑:弹窗/追加提示文本
                $('#camp_section').append('<div class="register-tip">'+res.msg+'</div>');
                // 要弹出提示框直接用 alert(res.msg) 即可
            }
        },'json'); // 指定返回数据格式为JSON
    });
});

注意事项

  • WordPress AJAX处理函数必须终止执行,wp_send_json底层已自带终止逻辑,不需要额外加wp_die(),如果不用JSON返回则需要手动加wp_die(),否则返回结果末尾会自动追加多余的0导致格式错误。
  • 现有代码依赖表单序列化后的索引取值,建议优化为按字段名匹配取值,避免后续调整表单字段顺序后逻辑失效。

内容的提问来源于stack exchange,提问作者zahra taran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:15:01