通过AJAX的WordPress函数未被调用

时间:2017-01-16 作者:Muhammad Muazzam

我编写了以下js代码

jQuery(".selectbox").change(function(){
 var id = this.id;
var key_id=id;
 var selectname=\'\';

     jQuery.post(
    // see tip #1 for how we declare global javascript variables
    MyAjax.ajaxurl,
    {
        // here we declare the parameters to send along with the request
        // this means the following action hooks will be fired:
        // wp_ajax_nopriv_myajax-submit and wp_ajax_myajax-submit
        action : \'get-mata-value\',

        // other parameters can be added along with "action"
        prev_metakey : jQuery(this).val(),
        metakey: key_id
    },
    function( result ) {
       if(result[\'success\'] != false)
        {
            jQuery.each(result,function(index,value){
                jQuery(\'#\' +id).append(\'<option value="\'+value+\'">\'+value+\'</option>\');
            });
        }
    }
);
});

其功能是:

wp_localize_script( \'script\', \'MyAjax\',
    array( 
        \'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
    )
);
wp_enqueue_script( \'script\', get_template_directory_uri() . \'/js/vehicle_parts.js\', array ( \'jquery\' ), 1.1, true);


    add_action("wp_ajax_get-mata-value", "get_mata_value");
    add_action("wp_ajax_nopriv_get-mata-value", "get_mata_value");
    function get_mata_value()
    {   
        global $wpdb;
    $key=$_POST["metakey"];
        $prev_value=$_POST["prev_metakey"];
        $result=array();

     $result=$wpdb->get_col("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = \'$key\'");

     return($result);

    }
当我更改选择框时,不会调用该函数。

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

根据您的评论,我认为MyAjax变量没有使用wp_localize_script().

在您的情况下,您很可能需要以下内容:

wp_localize_script( \'script\', \'MyAjax\',
    array( 
        \'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
    )
);
也就是说,我没有足够的信息来提供更详细的答案。

编辑:此和排队脚本调用应位于wp_enqueue_scripts 回调:

add_action(\'wp_enqueue_scripts, \'enqueue_my_scripts\' );
function enqueue_my_scripts() {

    wp_enqueue_script( \'script\', get_template_directory_uri() . \'/js/vehicle_parts.js\', array ( \'jquery\' ), 1.1, true);

    wp_localize_script( \'script\', \'MyAjax\',
        array( 
            \'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
        )
    );

} 

SO网友:Kudratullah

按照规范codex 您应该在javascript排队后本地化。

重要的必须在使用wp\\u register\\u script()或wp\\u enqueue\\u script()注册脚本后调用wp\\u localize\\u script()。

Edit: 你真的需要echo ajax回调的输出和使用exit()die() 在那之后。

相关推荐

无法使用AJAX访问数据库中的数据

我正试图在wordpress中首次调用AJAX。我遵循了一些教程,到目前为止已经达到了这一点。但当我试图安慰的时候。将从数据库中获取的数据记录在AJAX调用中,我发现以下错误:未捕获引用错误:未定义数据代码:功能。phpfunction my_ajax_handler(){ global $wpdb; $name = $wpdb->get_results(\"SELECT * FROM username\"); echo $name;