2012-08-06 52 views
0

一直看着現在的WP AJAX文檔小時,仍不能 算出這個WordPress的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

您正在提交這數據到同一頁面? – Ohgodwhy 2012-08-07 00:10:20

回答

0

爲了讓AJAX工作,你需要添加兩個動作鉤子,一個已經你已經和另一個在需要時用戶未登錄工作,這是wp_ajax_nopriv_AWNT_save,這將使得阿賈克斯,而無需登錄工作,最後在該函數的最後加上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 
} 

你也應該刪除您javascriptsingle.php,並保持在一個單獨的js文件,例如你的主題的根文件夾中創建子文件夾js或者你什麼都想要,並保持文件夾中和它命名,例如,my_single_ajax.js並粘貼JavaScript代碼在該文件作爲您functions.php文件如下

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); 
     }); 
    }); 
}); 

如下

01添加一個動作
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' 
} 

只有當它是single.php時,纔會將腳本排隊(my_single_ajax.js),就是這樣。

+0

這是一個插件選項頁面,這就是爲什麼我沒有使用nopriv,因爲只有擁有管理員權限的人才會使用它。我打算把JavaScript放在一個單獨的文件中,但只有一切都啓動並運行。我不認爲這應該對網頁的工作方式產生任何總體影響。另外,我在ajaxurl的管理部分收到了ajax。但我也有入隊腳本。 – 2012-08-07 16:25:09

+0

那麼你從響應中得到了什麼? – 2012-08-07 20:12:37