WordPress Ajax 请求返回 0

Posted

技术标签:

【中文标题】WordPress Ajax 请求返回 0【英文标题】:The WordPress Ajax request returns 0 【发布时间】:2015-05-24 08:22:45 【问题描述】:

我不知道为什么什么都没有返回 我是 Ajax 的真正初学者.. 我刚刚阅读了很多关于在 Woprdpress 中使用 Ajax 的主题,但这些示例对我来说非常先进 这是我的JS代码combo_checkout_iRange.js

jQuery(document).ready(function() 
    jQuery('#loader').hide();
    jQuery('#check-out-date').hide();
    jQuery('#check-in-date').change(function()
        jQuery('#check-out-date').fadeOut();
        jQuery('#loader').show();
        jQuery.ajax(
            type: 'POST',
            url:myAjax.ajaxurl, 
            data: 
                action : 'my_ajax_handler',
                parent_id: jQuery("#check-in-date").val()
            ,
            success: function(data)
                alert(data);
                jQuery('#loader').hide();
                jQuery('#check-out-date').show();
                jQuery('#check-out-date').append(data);
            );
            return false;
        );
        jQuery('#check-out-date').change(function()
            alert(jQuery('#check-out-date').val());
        );
    );

这是我在function.php上写的

注意:这应该适用于名为“会议”的帖子类型

add_action("wp_enqueue_scripts", function() 

     if (is_single()) 
        if (get_post_type() == 'meetings')
        
            wp_enqueue_script('combo_checkout_iRange', get_template_directory_uri() . '/js/combo_checkout_iRange.js', array( 'jquery' ), '1.0' ,true);

            $data_array = array(
                'ajaxurl' => admin_url( 'admin-ajax.php' )
            );

            wp_register_script( 'combo_checkout_iRange', get_template_directory_uri() . '/js/combo_checkout_iRange.js', array('jquery') );
            wp_localize_script( 'combo_checkout_iRange', 'myAjax', $data_array );



        
    
);

这是我的 ajax 处理程序,我将其放入 single_meetings.php

add_action("wp_ajax_my_ajax_handler", "my_ajax_handler");
add_action("wp_ajax_nopriv_my_ajax_handler", "my_ajax_handler");

function my_ajax_handler() 
                if ( isset($_REQUEST["parent_id"]) ) 
                     $id    = $_REQUEST["parent_id"];
                     return $id;
                     die();
                 
             

【问题讨论】:

您是否尝试过检查浏览器控制台中的网络面板以确保您的来自数据包含在您的http headers 中? 【参考方案1】:

您不能在 AJAX 回调中使用 return。代码永远不会到达下面一行的die。您需要回显该值,然后使用wp_die()

替换:

return $id;
die();

与:

echo $id;
wp_die();

【讨论】:

确保回调正确触发,以便排除。将echo $id; 更改为echo 5; 它似乎没有按应有的方式工作在编辑 echo $id` 以 echo 5;` 后没有任何变化但我不知道为什么 谢谢您,您只需声明原因;)现在可以正常工作了:) 正如@Nathan 所说,我的问题出在 Ajax 处理程序的位置,因此回调没有响应

以上是关于WordPress Ajax 请求返回 0的主要内容,如果未能解决你的问题,请参考以下文章

php脚本得到两个ajax请求,只返回一个?

wordpress的ajax请求

ajax在wordpress中发送400错误请求错误

Wordpress、管理菜单、Ajax 400 错误请求

Wordpress 无法通过 ajax 请求加载正确的语言 mo 文件

Wordpress:在没有插件的情况下集成 Mailchimp 错误请求 400 Ajax URL