Why AJAX response 0!

时间:2014-09-06 作者:kamal karki

为什么AJAX响应为0!让我很恼火!。我想在blur上检查电子邮件地址是否有效。请建议我这是我的代码这是我的php代码

 add_action(\'wp_ajax_send_message_to_customer\',\'add_send_msg\');?>
<form>
    <input type="text" name="email_customer"  id="email_customer"/>
</form>
<div id="email_info"></div>
<?php
function add_send_msg(){
    $email = isset($_POST[\'email_customer\']) ? $_POST[\'email_customer\'] : null; 
    if( $email ){
        if(is_email($email)){
        $msg = \'valid\';
        }
    }
    echo $msg;
    die();
}
添加js和本地化脚本

    add_action( \'init\', \'my_script_enqueuer\' );

function my_script_enqueuer() {
   wp_enqueue_script( "send_email", path_join(WP_PLUGIN_URL,basename(dirname(__FILE__)).\'/send_email.js\', array(\'jquery\')));
   wp_localize_script( \'send_email\', \'myAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' )));        
}
和js文件发送电子邮件。js公司

jQuery(document).ready(function () {
    jQuery("input[name=\'email_customer\']").blur(function (){
        dataString = "email_customer="+jQuery(this).attr("value")+"&action=send_message_to_customer";


        jQuery.ajax({
            type: "POST",
            data: "email_customer="+jQuery(this).attr("value")+"&action=send_message_to_customer",
            url: myAjax.ajaxurl,
            beforeSend: function(){
                jQuery("#email_info").html("Checking Email......");
            },          
            success: function(data) {
                alert(data);
                if( data == \'valid\'){
                jQuery("#email_info").html("Email Ok");

            }
            else{
                jQuery("#email_info").html("You have entered invalid email");

            }

        }

        });
    });
});

2 个回复
SO网友:Otto

首先,不要在init 行动在上排队wp_enqueue_scripts 前端操作,或admin_enqueue_scripts 后端的操作。

其次wp_ajax_* 操作仅适用于已登录的用户。对于未登录的用户,必须使用wp_ajax_nopriv_* 改为操作。如果它需要对两者都起作用,那么您必须同时钩住两者。

最后是jQuery。ajax调用缺少“send\\u message\\u to\\u customer”的“action”,数据格式错误。应如下所示:

data: [\'email_customer\' : jQuery(this).attr("value") ], action: \'send_message_to_customer\',

或者可能只是jQuery(this).val() 而不是在那里调用attr()。不知道,我自己没有尝试代码来测试它。

SO网友:Domain

试着这样写“数据”和“操作”-

操作:“向客户发送\\u message\\u”

数据:{\'email\\u customer\':jQuery(this).val()}

再添加一个挂钩-

add\\u操作(\'wp\\u ajax\\u nopriv\\u send\\u message\\u to\\u customer\',\'add\\u send\\u msg\');

结束

相关推荐

使用jQuery.get时出现admin-ajax.php(已中止)错误

有一件事让我很困惑,那就是:当我通过Ajax加载javascript文件并观察正在发出的http请求时,我在Firebug中看到以下错误:admin Ajax。php(中止)请参见此图片:导致此错误的是jquery get file函数:jQuery.get(\'/assets/js/shop.js\', function(data) { eval(data); }); 如果我删除了上面的脚本,那么就不会再有错误了。有什么建议吗?编辑1:我已经明白了为什么会出现这些中止的错误。在商店里。js文