Ajax call returning 0

时间:2017-08-12 作者:Karts

我的代码如下:

   $("#member_country").change(function() {
        var country = $(this).val();
        alert(country);
        var ajax_url_mtypes = ins_membership_ajax.ajax_url + \'?action=ins_get_membershiptypes_from_country&country=\'+country;
        alert(ajax_url_mtypes);
        jQuery.ajax({
        url:ajax_url_mtypes,            
        method:\'GET\',
        contentType: "application/json;charset=utf-8",
        success:function(response) {
          //var resp = $.trim(response);
          alert(response);
          //$("#ins-member-profile-select-state").html(resp);
      }
      });

  add_action(\'wp_enqueue_scripts\',array(INS_Membership::get_instance(),\'ins_event_front_scripts\'));

 public function ins_event_front_scripts(){
    wp_register_script(\'member-front-script\',plugins_url(\'/js/member-front-script.js\', __FILE__),array(\'jquery\'),\'1.1\',true);
    //localize script for ajax url
    wp_localize_script( \'member-front-script\',\'ins_membership_ajax\', array(
        \'ajax_url\' => admin_url(\'admin-ajax.php\')
    ));
    wp_enqueue_script(\'member-front-script\');
    //enqueue styles
    wp_register_style(\'member-front-styles\',plugins_url(\'/css/member-front-styles.css\', __FILE__));
    wp_enqueue_style(\'member-front-styles\');

}

add_action(\'wp_ajax_ins_get_membershiptypes_from_country\',array(INS_Membership::get_instance(),\'ins_get_membershiptypes_from_country_callback\'));
我收到了Ajax调用的0响应。我应该怎么做才能解决这个问题?

1 个回复
最合适的回答,由SO网友:Johansson 整理而成

在定义Ajax处理程序时,应该考虑同时为登录用户和未登录用户定义。您可以通过以下方式执行此操作:

add_action(\'wp_ajax_my_handler\', \'callback_function\');
add_action(\'wp_ajax_nopriv_my_handler\', \'callback_function\');
现在,关于你的问题。如果您感兴趣,我们可以将此代码转换为REST端点,这样可以更快更容易地进行设置。让我们从定义路由开始。

add_action( \'rest_api_init\', function () {
    register_rest_route( \'karts\', \'/ins_get_membershiptypes_from_country/\', array(
            \'methods\' => \'GET\',
            \'callback\' => \'ins_get_membershiptypes_from_country_callback\'
    ) );
});
此时,我们可以通过访问以下内容来运行我们的任务:

www.example.com/wp-json/karts/ins_get_membershiptypes_from_country/
现在是Ajax调用。使用此选项可以本地化脚本,并传递网站URL:

wp_localize_script( \'member-front-script\',\'ins_membership_ajax\', array(
    \'ajax_url\' => site_url()
));
因此,我们可以访问Ajax调用中的路径:

   $("#member_country").change(function() {
        var country = $(this).val();
        alert(country);
        var ajax_url_mtypes = ins_membership_ajax.ajax_url + \'/kartsins_get_membershiptypes_from_country\';
        alert(ajax_url_mtypes);
        jQuery.ajax({
        url:ajax_url_mtypes,            
        method:\'GET\',
        data : { country : country},
        dataType: \'json\',
        success:function(response) {
          //var resp = $.trim(response);
          alert(response);
          //$("#ins-member-profile-select-state").html(resp);
      }
      });
我并没有为调用定义JSON数据类型。这样,您将在默认情况下获得Json响应。

结束

相关推荐

在PHP中跨函数嵌套的DIV似乎不起作用

我的父函数(vc_make_graph()), 它有主“PArent DIV”,调用几个子函数,如下所示。每个子函数也有相应的DIV,我假设它在逻辑上应该是父函数中DIV的子函数。我想将子函数中的所有对象封装到父函数中由main DIV(\'oveall\')定义的框中(vc_make_graph()). 问题是父函数(“total”)中的DIV似乎没有将DIV包含在其中的子函数中。下面是PHP代码、CSS和屏幕截图。非常感谢您的帮助!!<style> <?php include