如何在jQuery中获取WordPress$wpdb查询的值?

时间:2018-02-24 作者:Shawn W

我有这个功能从WooCommerce获取邮政编码

    public function validate_zipcode () {

    global $wpdb, $woocommerce;

    $sql = \' SELECT location_code FROM \' . $wpdb->prefix. \'woocommerce_shipping_zone_locations \';
    $sql .= "WHERE location_code IS NOT NULL";

    $zones = $wpdb->get_results($sql);

    return $zones;

}

  add_action( \'wp_ajax_nopriv_validate_zipcode\', array( &$this, \'validate_zipcode\' ));
我想使用Jquery获得结果,但我无法,错误响应是一个错误的请求,我做错了什么?

  jQuery(".check-zip").click(function(){

        var zipCode = jQuery("#custom_zip").val();
        var zipArray = [];

            jQuery.ajax({
                type: \'GET\',
                url: ajaxurl,
                data: {
                    action: \'validate_zipcode\'
                },

                success: function(data) {
                  console.log( data );

                },

                error: function( jqXHR, textStatus, errorThrown ) {

                    console.log( jqXHR, textStatus, errorThrown  );
                }
            });

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

我可以通过只使用jQuery的WooCommerce api来解决这个问题。

   $(".check-zip").on(\'click\', function () {

      var zipCode = jQuery("#custom_zip").val();
      var zipArray = [];
      var url = WPURLS.template_url;

      $(".zip-msg").remove();

      $.ajax({
          type: \'GET\',
          url: url + \'/wp-json/wc/v2/shipping/zones/1/locations\',

          dataType: "json",
          data: {
              type: \'postcode\'
          },
          beforeSend: function (xhr) {
              xhr.setRequestHeader(\'X-WP-Nonce\', wpApiSettings.nonce);
          },

          success: function (data) {

              $.each(data, function (key, value) {

                  zipArray.push(value.code);

              }); //end each function


              if ($.inArray(zipCode, zipArray) > -1) {

                  $("#custom_zip_checkout_field").append("<div class=\'zip-msg\'>Service is available at " + zipCode + "</div>");

              } else {
                  $("#custom_zip_checkout_field").append("<div class=\'zip-msg\'>Oops! We are not currently servicing your area.</div>");
              }

          },

          error: function (jqXHR, textStatus, errorThrown) {


              console.log(jqXHR, textStatus, errorThrown);

          }


      }); //end ajax function

  });



                if($.inArray(zipCode, zipArray) > -1 ) {

                   jQuery("#custom_zip_checkout_field").append("<div class=\'zip-msg\'>Service is available at " + zipCode + "</div>");

                   }else{
                          jQuery("#custom_zip_checkout_field").append("<div class=\'zip-msg\'>Oops! We are not currently servicing your area.</div>");
                   }

                },

                error: function( jqXHR, textStatus, errorThrown ) {


                    console.log( jqXHR, textStatus, errorThrown  );

                }


            });//end ajax function

    });

结束

相关推荐

我应该在index.php中使用模板文件还是只使用条件标记?

使用模板文件,我正在构建一个模板之间几乎没有差异的主题。现在我差不多是这样设置的:singular.php - 单页/帖子;完整的帖子内容、评论home.php - 博客页面;帖子内容完整,无评论index.php - 其他一切;带条件标记的帖子摘要看着这个设置,我意识到我可以这样做:<?php get_header(); ?> <div id="main-column"> <?php if ( have_posts()