我已经使用谷歌搜索了一段时间,并尝试了许多方法(例如,将我的formName和formData嵌套在'data:'属性中,但这导致了parseerrors,所以我猜我很漂亮几乎可以正常工作了!我还删除了这些属性,并对函数中的项目进行了硬编码,但是问题仍然存在。
一切似乎都正常,并且我收到成功警报,但是当我检查数据库时,usermeta尚未更新。我也不知道调试PHP函数的最佳方法,因此将来的任何技巧都将很方便!
这是我的ajax函数,它会在模糊时触发:
function storeData(data) {
$.ajax({
type: 'POST',
formData: data,
formName: 'Testform',
action: 'storeApplicationData',
success:function( data ) {
console.log('stored form');
},
error: function(xml, error) {
console.log(error);
}
});
return false;
}
这是我的函数文件中的PHP代码,我已经硬编码了现在传递给update_user_meta的值,只是为了确保这不是问题:
function storeApplicationData(){
update_user_meta('15', 'Testform', '12345678');
}
add_action('wp_ajax_storeApplicationData', 'storeApplicationData');
add_action('wp_ajax_nopriv_storeApplicationData', 'storeApplicationData');
我正在直接检查数据库,meta字段没有更新...
任何帮助将不胜感激!
答案 0 :(得分:0)
我发现了这一点,我没有为我的Ajax网址添加适当的后缀:
function theme_enqueue() {
$theme_url = get_template_directory_uri(); // Used to keep our Template Directory URL
$ajax_url = admin_url( 'admin-ajax.php' ); // Localized AJAX URL
// Register Our Script for Localization
wp_register_script( 'applications', "{$theme_url}/applicationform.js", array( 'jquery' ),'1.0', true);
// Localize Our Script so we can use `ajax_url`
wp_localize_script('applications','ajax_url',$ajax_url);
// Finally enqueue our script
wp_enqueue_script( 'applications' );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue' );
我还添加了:
url: ajax_url,
到我的ajax!