简体   繁体   English

无法在Wordpress中使用AJAX填充选择字段-更新

[英]Cannot populate select fields with AJAX in Wordpress - UPDATE

UPDATE: My ajax function for handling the response is correct, but I have a hard time to iterate through the response object and populate the select field. 更新:我用于处理响应的ajax函数是正确的,但是我很难遍历响应对象并填充选择字段。 I've tried and with for loop instead of each() and is working better but the select field was populated with "undefined". 我已经尝试过并使用for循环而不是each(),并且工作得更好,但是select字段中填充了“ undefined”。 Any ideas? 有任何想法吗?

Below is my Jquery code 下面是我的jQuery代码

jQuery(document).ready(function() {
    // Avoid conflicts
    $ = jQuery;

    $('#nomoi-select').change(function() {
        var nomos_name = $('#nomoi-select option:selected').attr('id');
        var jsonMimeType = "application/json;charset=UTF-8";

        type = 'POST';
        data = { 'parent_id': nomos_name, action : 'get_child_categories' };
        dataType = 'json';
        contentType = "application/json; charset=utf-8";
        processData = false;
        $.post( ajaxurl, data, function(response) {
            if( response ){
                console.log(response);
                var content = '';

                var data = JSON.stringify(response);
                $(data).each(function(key, value) {
                    content += '<option>' + value + '</option>';
                });
                $(content).appendTo("#town-select");
            }
        });
    }).change();
});

My ajax function: 我的ajax功能:

function get_child_categories() {

  if (isset($_POST['parent_id'])) {
    $parent_id = ($_POST['parent_id']);
    $result = array();

    $args = array(
      'post_type' => 'seller',
      'order_by' => 'name',
      'hide_empty' => 0,
      'exclude' => 1,
      'taxonomy' => 'nomos',
      'hierarchical' => 1,
      'child_of' => $parent_id
    );

    $categories =  get_categories( $args );
    foreach ( $categories as $cat ) {

      $result = array(
        'town_id' => $cat->cat_ID,
        'town_name' => $cat->cat_name
      );
      echo json_encode($result);
    }
  }
  die();
}


add_action('wp_ajax_get_child_categories', 'get_child_categories');
add_action('wp_ajax_nopriv_get_child_categories', 'get_child_categories');

The OnChange is working fine and I get the following output from log: OnChange工作正常,我从日志中获得以下输出:

{"town_id":"41","town_name":"\u0391\u0393\u0393\u0395\u039b\u039f\u039a\u0391\u03a3\u03a4\u03a1\u039f"}{"town_id":"42","town_name":"\u0391\u0393\u03a1\u0399\u039d\u0399\u039f"}{"town_id":"40","town_name":"\u0391\u0399\u03a4\u03a9\u039b\u0399\u039a\u039f"}{"town_id":"84","town_name":"\u0391\u039b\u03a5\u0396\u0399\u0391"}{"town_id":"85","town_name":"\u0391\u039c\u03a6\u0399\u039b\u039f\u03a7\u0399\u0391"}{"town_id":"86","town_name":"\u0391\u039d\u0391\u039a\u03a4\u039f\u03a1\u0399\u039f"}{"town_id":"87","town_name":"\u0391\u039d\u03a4\u0399\u03a1\u03a1\u0399\u039f"}{"town_id":"88","town_name":"\u0391\u03a0\u039f\u0394\u039f\u03a4\u0399\u0391"}{"town_id":"89","town_name":"\u0391\u03a1\u0391\u039a\u03a5\u039d\u0398\u039f\u03a3"}{"town_id":"90","town_name":"\u0391\u03a3\u03a4\u0391\u039a\u039f\u03a3"}{"town_id":"91","town_name":"\u0398\u0395\u03a1\u039c\u039f"}{"town_id":"92","town_name":"\u0398\u0395\u03a3\u03a4\u0399\u0395\u03a9\u039d"}{"town_id":"93","town_name":"\u0399\u0395\u03a1\u0391\u03a3 \u03a0\u039f\u039b\u0397\u03a3 \u039c\u0395\u03a3\u039f\u039b\u039f\u0393\u0393\u0399\u039f\u03a5"}{"town_id":"94","town_name":"\u0399\u039d\u0391\u03a7\u039f\u03a5"}{"town_id":"95","town_name":"\u039c\u0391\u039a\u03a1\u03a5\u039d\u0395\u0399\u0391\u03a3"}{"town_id":"96","town_name":"\u039c\u0395\u0394\u0395\u03a9\u039d\u039f\u03a3"}{"town_id":"97","town_name":"\u039c\u0395\u039d\u0399\u0394\u0399\u039f\u03a5"}{"town_id":"98","town_name":"\u039d\u0391\u03a5\u03a0\u0391\u039a\u03a4\u039f\u03a5"}{"town_id":"99","town_name":"\u039d\u0395\u0391\u03a0\u039f\u039b\u0397\u03a3"}{"town_id":"100","town_name":"\u039f\u0399\u039d\u0399\u0391\u0394\u03a9\u039d"}{"town_id":"101","town_name":"\u03a0\u0391\u039b\u0391\u0399\u03a1\u039f\u03a5"}{"town_id":"102","town_name":"\u03a0\u0391\u039d\u0391\u0399\u03a4\u03a9\u039b\u0399\u039a\u039f\u03a5"}{"town_id":"103","town_name":"\u03a0\u0391\u03a1\u0391\u0392\u039f\u039b\u0391\u03a3"}{"town_id":"104","town_name":"\u03a0\u0391\u03a1\u0391\u039a\u0391\u039c\u03a0\u03a5\u039b\u0399\u03a9\u039d"}{"town_id":"105","town_name":"\u03a0\u039b\u0391\u03a4\u0391\u039d\u039f\u03a5"}{"town_id":"106","town_name":"\u03a0\u03a5\u039b\u039b\u0397\u039d\u0397\u03a3"}{"town_id":"107","town_name":"\u03a3\u03a4\u03a1\u0391\u03a4\u039f\u03a5"}{"town_id":"108","town_name":"\u03a6\u03a5\u03a4\u0395\u0399\u03a9\u039d"}{"town_id":"109","town_name":"\u03a7\u0391\u039b\u039a\u0395\u0399\u0391\u03a3"}

Taking the hint from Tom Kriek: 根据汤姆·克里克的提示:

You could always build all of the tags inside the php script,and then return that to the function. 您可以始终在php脚本中构建所有标记,然后将其返回给函数。 This saves you iterating it on the ajax side. 这样可以避免在ajax端进行迭代。 All you have to do then is stick the html in the right spot. 然后,您所要做的就是将html粘贴在正确的位置。 Namely in the select tag. 即在选择标签中。

I've used $(#town-select).html(response); 我用过$(#town-select).html(response); in the JQuery response and worked perfectly. 在JQuery响应中,效果很好。 Thanx everybody! 谢谢大家!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM