2013-12-10 139 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()'。 –

相关问题