所以我得出结论,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
});
答案 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' );