WordPress前端AJAX返回0

时间:2018-03-13 20:41:50

标签: php ajax wordpress

所以我得出结论,WP AJAX是一团糟。话虽如此,我没有看到我在这里犯了错误。

对于记录我无论如何都得零,无论我是否使用安全性随机数,是否更改函数名称我总是为零。即使我更改函数名称不匹配我也没有实际错误,只有0。

我在这里进行了一次搜索,大部分相关主题都是指错字或与功能名称不匹配。

对于记录,这是前端功能。谢谢!

PHP中的functions.php

function mcc_scripts() {
  wp_register_script( 'safety-campaign', get_template_directory_uri() . '/js/safety-campaign.js', array('jquery'), '0.0.1', true );
  wp_enqueue_script('safety-campaign');
  wp_localize_script( 'safety-campaign', 'MyAjax', array(
    'ajaxurl' => admin_url( 'admin-ajax.php' ),
    'security' => wp_create_nonce( 'some_string' )
  ));
}
add_action( 'wp_enqueue_scripts', 'mcc_scripts' );

// The function that handles the AJAX request
function save_pledge() {
  check_ajax_referer( 'some_string', 'security' );
  echo 'test'; //Checking in the XHR network tab this also responds 0 
  //The request does show the proper data being passed though

  wp_die();
}
add_action( 'wp_ajax_nopriv_save_pledge', 'save_pledge' );

调用此功能的Javascript

    var data = {
      action: 'save_pledge',
      security : MyAjax.security,
      formdata : $("#campaign-form").serialize()
    };

    $.post(MyAjax.ajaxurl, data, function(response) {
      console.log(response) // This responds 0
    });

1 个答案:

答案 0 :(得分:1)

呃。

对于那些在同样的事情上挣扎的人来说,显然WP AJAX需要BOTH钩子。该解决方案还添加了没有nopriv的那个

add_action( 'wp_ajax_save_pledge', 'save_pledge' ); //This is required TOO
add_action( 'wp_ajax_nopriv_save_pledge', 'save_pledge' );