2013-12-10 54 views
0

我正嘗試將ajax請求發送到wordpress中的另一個php頁面。但每次它返回零其他results.I需要刪除零。我試過死();刪除零。但是在調用這個之後,整個屏幕變爲空白。我的代碼如下,如何在不顯示零的情況下在wordpress中發送ajax請求

jQuery的,

<script type="text/javascript"> 
function key_press(){ 
    jQuery.ajax({ 
url : '<?php echo get_admin_url()?>admin-ajax.php', 
type : 'POST', 
data : jQuery('[name="ans_name"]').serialize() 
}).done(function(result) { 
// ta da 
//alert("success"); 
jQuery("#widget_poll_id").html(result); 

}); 
} 

</script> 

PHP,

add_action('wp_ajax_nopriv_'.$_POST['ans_name'], 'my_ajax'); 
    add_action('wp_ajax_'.$_POST['ans_name'], 'my_ajax'); 


    function my_ajax() { 

    echo $_POST['ans_name']; 

    die(); 

} 

怎麼可能我從這種情況去掉?

+0

嘗試刪除回聲,並將其替換爲返回?刪除死() – Marty

回答

3

這是因爲你的行爲沒有被調用。

您需要聲明屬性action如下,以便WP知道要調用哪個動作。

在您的具體情況下,您還必須聲明ans_name(而不是data),以便存在$_POST['ans_name']。我猜你希望多次調用AJAX請求,因爲你在鉤子名稱中使用了$_POST['ans_name']。如果不是這種情況,我建議你使用靜態的東西,因爲在你不需要的時候可以在其他請求期間調用這個鉤子。

最後,我用WP AJAX處理程序對代碼進行了改進,這將確保包含您在AJAX請求期間可能需要的所有WP優點。

<script type="text/javascript"> 
    function key_press(){ 

     var data = { 
      url:  '<?php echo get_admin_url()?>admin-ajax.php', 
      type:  'POST', 
      action:  jQuery('[name="ans_name"]').serialize(), 
      ans_name: jQuery('[name="ans_name"]').serialize() 
     }; 

     var myRequest = jQuery.post(ajax_object.ajaxurl, data, function(response){ 
      alert('Got this from the server: ' + response); 
     }); 

     myRequest.done(function(){ 
      alert("success"); 
     }); 

    } 
</script> 

add_action('wp_ajax_nopriv_'.$_POST['ans_name'], 'my_ajax'); 
add_action('wp_ajax_'.$_POST['ans_name'], 'my_ajax'); 
function my_ajax(){ 

    echo $_POST['ans_name']; 

    die(); // Required for a proper Wordpress AJAX result 

} 

加成

爲確保非登錄用戶(nopriv鉤)AJAX請求被正確handeled,將它添加到您的functions.php文件。

<?php 
add_action('wp_head', 'plugin_set_ajax_url'); 
function plugin_set_ajax_url() { 
?> 
    <script type="text/javascript"> 
     var ajax_object = {}; 
     ajax_object.ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; 
    </script> 
<?php 
} 
?> 
+0

感謝它的工作。但我需要一點幫助。當我點擊提交按鈕時,它會返回「ans_name = 31」。但我不需要「ans_name」我只需要「31」。我知道它不是太難。但是我找不到那個。 –

+0

這可能是由於您在提交AJAX請求之前如何獲取「ans_name」(以及代理「action」)的值。我對'ans_name'字段的類型做了一個假設,但試着用'jQuery('[name =「]替換'jQuery('[name =」ans_name「]')。serialize ans_name「]')。VAL()'。 –

相關問題