检查插件中是否存在带有AJAX的前端电子邮件地址

时间:2013-07-04 作者:souporserious

我正在努力想办法解决这个问题。我在这里遵循了针对AJAX的wordpress codex:http://codex.wordpress.org/AJAX_in_Plugins

我一直返回的是0,我从来没有得到1。知道为什么吗?我的代码如下。

PHP:

add_action(\'wp_enqueue_scripts\', \'live_validation\' );
add_action(\'wp_ajax_validate_email\', \'validate_email_input\');
add_action(\'wp_ajax_nopriv_validate_email\', \'validate_email_input\');

function live_validation() {
    wp_enqueue_script( "validate_email", STRIPE_BASE_URL . \'inc/js/check-email.js\', array( \'jquery\' ) );
    wp_localize_script( "validate_email", "validateEmail", array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
}

function validate_email_input() {
    $email = $_POST[\'email\'];
    if ( email_exists($email) ) {
        echo 1; 
    } else {
        echo 0;
    }
    exit;
}
JS公司:

jQuery(document).ready(function($) {
    $(\'input[name=email]\').keyup(function() {

        var input_value = $(this).val();

        $.post( validateEmail.ajaxurl, { action:\'validate_email\', email:input_value }, function(data) {
            $(\'.message\').html(data);
        });
    });
});
HTML:

<div class="form-row">
    <label for="email"><?php _e(\'Email\', \'oe\'); ?></label>
    <input type="text" size="20" id="email" name="email" />
    <span class="message"></span>
</div>

2 个回复
最合适的回答,由SO网友:souporserious 整理而成

发现问题。通读法典总是有帮助的!

“注意:在插件wp\\U ajax用法中编写插件时,请在主插件文件中的下面几行,例如myplugin.php”

http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_%28action%29

只要确保所有AJAX请求都放在主插件文件中即可。

SO网友:Milo

我猜您正在通过输入您的管理员电子邮件地址来测试这一点。查看Codex页面email_exists():

如果电子邮件存在,函数将返回向其注册电子邮件的用户的ID。

如果您正在输入为网站创建的第一个用户的电子邮件地址,则用户ID将为0, 所以if ( email_exists($email) ) 因为该用户将计算为false。该页给出的示例无法解释这种情况。

结束

相关推荐

AJAX问题-处理Zip文件时未捕获语法错误

我正在创建一个应用程序,允许用户填写表单,然后在提交时为他们下载一个定制的zip文件。我正在利用AJAX来完成这项任务。 Build.prototype.ajaxHandler = function(method, values) { jQuery.ajax({ type: \'POST\', url: WP_LOCALIZED[\'url\'], data: {