【问题标题】:Not getting the response in Ajax success function在 Ajax 成功函数中没有得到响应
【发布时间】:2017-02-09 10:14:44
【问题描述】:

我是 PHP 和 WordPress 的新手。在这里,我使用 Ajax 调用来提交表单的信息,作为回应,我想要一封位于 <div> 部分的谢谢消息。在这段代码中,我能够执行 function.php 中的函数,但没有得到响应。函数或wordpress插入查询有什么问题吗?你能告诉我我做错了什么吗? 请帮我。提前谢谢你。

<script type="text/javascript">
    $('#reg-form').submit(function () {
        var name = $('#name').val();
        var email = $('#signup-email').val();
        var password = $('#password').val();
        jQuery.ajax({
            url: ajaxurl,
            type: "POST",
            dataType: 'json',
            data: {
                'action': "registration",
                'name': name,
                'email': email,
                'password': password
            },
            success: function (response) {
                alert("hi");
                $("#signup-thanks").show();
                $("#signup").hide();

            }
        });
    });
</script>

<div class="col-sm-5 " style="margin-top: 1em" >
    <div id="signup">
        <form id="reg-form" method="post" >
            <div class="row">
                <div class="col-sm-offset-1 col-sm-10 form-group col-xs-offset-1 col-xs-10" id="form">
                    <input type="text" class="form-control form-text" id="name" name="organization_name" placeholder="name of NGO" required  >
                </div>
            </div>
            <div class="row">
                <div class="col-sm-offset-1 col-sm-10 form-group col-xs-offset-1 col-xs-10" id="form">
                    <input type="email" class="form-control form-text" id="signup-email" name="email" placeholder="email" required  >
                </div>
            </div>
            <div class="row">
                <div class="col-sm-offset-1 col-sm-10 form-group col-xs-offset-1 col-xs-10 " id="form">
                    <input type="password" class="form-control form-text" id="password" name="password" placeholder="password" required=""  />
                </div>
            </div>

            <div class="row">
                <div class="col-sm-offset-1 col-sm-10 col-xs-offset-1 col-xs-10" id="btnn">
                    <button class="btn btn-success button-def form-text btn-font "  id="registration" type="submit" name="go">Sign Up Free</button>
                </div>
            </div>

        </form>
    </div>
    <div class=" row" id="signup-thanks">
        <div class="col-sm-offset-1 col-sm-10 col-xs-offset-1 col-xs-10 signup-thanks-box " style="text-align: center; display: none;">
            <p class=" thanks-font"  style="font-size: 32px;">Thanks for signing up.</p>

            <p class="font-body"> This means we'll work harder so you can start using this product.</p>
        </div>
    </div>

function registration()
{
    global $wpdb;
    $name = $_POST['name'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    try
    {
        $b = $wpdb->query("INSERT INTO `wp_registration`(`reg_ngo_name`, `reg_email_id`, 'reg_password') VALUES ('$name', '$email', '$password')");
        // $wpdb->insert( 'wp_registration', array('reg_ngo_name' => $name, 'reg_email_id' => $email, 'reg_password' => $password) , array( '%s', '%s', '%s') );
        print json_encode($b);
    }
    catch (Exception $e)
    {
        print json_encode("error occured" . $e);
    }
    exit();
}

add_action('wp_ajax_registration', 'registration');
add_action('wp_ajax_nopriv_registration', 'registration');

【问题讨论】:

  • 在ajax中-成功函数尝试console.log(response)
  • $b 会返回什么?

标签: javascript php jquery ajax wordpress


【解决方案1】:

我已经用我的简单代码替换了你的 jquery 和 functions.php 代码。

希望这能解决你的问题。

jQuery 代码

<script type="text/javascript">
$('button#registration').click(function(e) {
    e.preventDefault();
    var name = $('#name').val();
    var email = $('#signup-email').val();
    var password = $('#password').val();
    var data = {
                'action': 'registration',
                'name': name,
                'email': email,
                'password': password
                };
    var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
    jQuery.post(ajaxurl, data, function (response) {
        alert("hi");
        $("#signup-thanks div").show();
        $("#signup").hide();
    });

});

</script>

这是你的functions.php代码。

function registration(){  
    global $wpdb;
    $name = $_POST['name'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    $table_name = $wpdb->prefix . 'registration';
    $sql = "INSERT INTO $table_name (reg_ngo_name,reg_email_id,reg_password) VALUES 
            ('".$name."', '".$email."','".$password."')";
    $wpdb->query($sql);
    exit;
}
add_action('wp_ajax_registration', 'registration');
add_action('wp_ajax_nopriv_registration', 'registration');

【讨论】:

  • 嘿,我现在收到回复了。但我还有另一个问题。我的感谢信息
    部分没有显示。
  • 试试这个:$("#signup-thanks").css('display','block');
  • 如果您觉得我的回答有点用,请改正或投票。
  • 你错过了一件事,你已经隐藏了子 div,你正在通过 jquery 显示父 div,只需在 id 后添加 div 和空格。就像这样-> $("#signup-thanks div").show();
猜你喜欢
相关资源
最近更新 更多
热门标签