WordPress AJAX返回0-我的案例

时间:2019-06-11 作者:Mirquez Rodriguez

我的问题与其他情况相同,但我的代码很好,我与其他人进行了比较,并遵循了所有说明和良好实践,但它不起作用。这里是我的代码:

jQuery("#genera-pdf").click(function(e){
  e.preventDefault();
  var price1 = jQuery(\'input[type=text][id=price1]\').val();
  var price2 = jQuery(\'input[type=text][id=price2]\').val();

   jQuery.ajax({
               url : \'/wp-admin/admin-ajax.php\',
               type: \'POST\',
               data: {action: \'pdfAction\', a: price1, b: price2}),
               success: function(data){
                   alert(data);     
               },
               error: function(errorThrown){
                   alert(errorThrown);
               }
             });
          });
我的功能是:

function pdfAction(){
$post = $_POST[\'pdfAction\'];
echo "something";

wp_die();

}
add_action(\'wp_ajax_pdfAction\',\'pdfAction_callback\');
add_action(\'wp_ajax_nopriv_pdfAction\',\'pdfAction_callback\');
知道发生了什么吗?

1 个回复
最合适的回答,由SO网友:Deepak Singh 整理而成

函数名和ajax操作回调名称应该相同。

add_action(\'wp_ajax_pdfAction\',\'pdfAction_callback\');
add_action(\'wp_ajax_nopriv_pdfAction\',\'pdfAction_callback\');

function pdfAction_callback(){
    $post = $_POST[\'pdfAction\'];
    echo "something";

    wp_die();

}
请使用上述内容更新您的php代码。

目前,您的php函数尚未执行。

Update:

Ajax脚本,

$(document).on(\'click\', "#generate-pdf", function(){

    var price1 = $("#price1").val();
    var price2 = $("#price2").val();

    $.ajax({
        url: ajax_object.ajax_url, // AJAX handler
        data: {
            \'action\': \'pdfAction\',
            \'price_1\': price1,
            \'price_2\': price2
        },
        type: \'POST\',
        success: function(data) {

            console.log(data);
            console.log(data.price_1) // to access individual values

        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });
    return false;

});
注册Ajax操作Url和脚本,

function ajax_enqueue_scripts() {

    // Enqueue your javascript file 
    wp_register_script( \'ajax-scripts\', get_template_directory_uri() . \'/js/ajax-scripts.js\', array(\'jquery\'), \'1.0.0\', true );

    // in JavaScript, object properties are accessed as ajax_object.ajax_url
    wp_localize_script( \'ajax-scripts\', \'ajax_object\', array( 
        \'ajax_url\' => admin_url( \'admin-ajax.php\' ), // admin ajax url 
    ));

    wp_enqueue_script(\'ajax-scripts\');

}

add_action( \'wp_enqueue_scripts\', \'ajax_enqueue_scripts\' );
Ajax请求回调函数,

add_action(\'wp_ajax_pdfAction\',\'pdfAction_callback\');
add_action(\'wp_ajax_nopriv_pdfAction\',\'pdfAction_callback\');

function pdfAction_callback(){

    // Getting data sent from Ajax request

    $price_1 = $_POST[\'price_1\'];
    $price_2 = $_POST[\'price_2\'];


    // Prepare Data to be send back to AJAX request
    $return = array(
        \'price_1\'  => $price_1,
        \'price_2\'  => $price_2
    );

    wp_send_json($return); // Send JSON response back to our AJAX Request and die().

    // we don\'t require wp_die(); here wp_send_json() will take care of it.

}
为了安全起见,您还应该考虑在此处使用nonce。

相关推荐

函数的AJAX调用包含未加载的Java脚本(插件开发)

我写了一个插件,它在后端有一个用户管理页面。此页面通过AJAX调用从数据库加载用户数据。此函数返回的数据确实包含对javascript库进行类引用的HTML。对于我的usermanagement页面,我已将所有必需的javascript库排队,但它们无法处理AJAX调用加载的数据:functions.php... if ( $_GET[\'page\'] == \'test_usermanagement\' ) { wp_register_script(\'usermanag