现在已经看了几个小时的WP ajax文档但仍然不能 想出来
所有代码都在单页上。试图通过ajax更新一些选项 它只是不起作用。回应是说它成功,但是 current_form选项未更新。任何帮助将不胜感激。
<?php
add_action('wp_ajax_AWNT_save', 'AWNT_save_data');
function AWNT_save_data() {
update_option('current_form', 'foo');
}
echo get_option('current_form');
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#save').click(function() {
var data = {
action: 'AWNT_save',
form_name : $('#form_name').val(),
customC: $('#customC').is(":checked"),
no_throttle: $('#no_throttle').is(":checked"),
form_code : $('#form_code').val()};
jQuery.post( ajaxurl, data, function(response) {
alert('Response: ' + response);
});
});
});
</script>
答案 0 :(得分:0)
要使ajax工作,你需要添加两个动作挂钩,一个已经拥有,另一个需要在用户未登录时工作且它是wp_ajax_nopriv_AWNT_save
,这将使ajax工作而无需登录最后在函数的最后添加die()
以停止执行,否则它将始终返回0
并且echo
应该在函数内部使用。
add_action('wp_ajax_AWNT_save', 'AWNT_save_data');
add_action('wp_ajax_nopriv_AWNT_save', 'AWNT_save_data');
function AWNT_save_data() {
update_option('current_form', 'foo');
echo get_option('current_form');
die(); // this should be here
}
此外,您应该从javascript
中删除single.php
并将其保存在单独的js
文件中,例如在主题的根文件夹中创建子文件夹js
或你想要什么,并将文件保存在该文件夹中,并将其命名为my_single_ajax.js
,并将javascript代码粘贴到该文件中,如下所示
jQuery(document).ready(function($) { // my_single_ajax.js file
$('#save').click(function() {
var data = {
action: 'AWNT_save',
// more...
};
jQuery.post( ajaxurl, data, function(response) {
alert('Response: ' + response);
});
});
});
在functions.php
文件中添加操作hook
,如下所示
add_action('wp_enqueue_scripts', 'my_scripts_method');
function my_scripts_method() {
if(is_single())
wp_enqueue_script( 'my_single_ajax', get_bloginfo('stylesheet_directory').'/js/my_single_ajax.js'); // assumed your sub folder name is 'js' and file name is 'my_single_ajax.js'
}
这只会在脚本(my_single_ajax.js)为single.php
时排队,就是它。