代码之家  ›  专栏  ›  技术社区  ›  Ciprian

AJAX不返回任何内容-Wordpress

  •  0
  • Ciprian  · 技术社区  · 11 年前

    我的代码基于此处接受的答案:

    Wordpress - fetch user info using jQuery ajax POST request

    页眉

    <?php $admin_ajax_path = ABSPATH . 'wp-admin/admin-ajax.php'; ?>
    
    <script>
      var absAjaxPath = "<?php echo $admin_ajax_path; ?>";
    </script>
    

    函数.php

    add_action('wp_ajax_nopriv_ajax_request', 'ajax_handle_request');
    add_action('wp_ajax_ajax_request', 'ajax_handle_request');
    
    function ajax_handle_request(){
      switch($_REQUEST['fn']){
        case 'getUserMeta':
          $output = ajax_user_meta($_REQUEST['id']);
          break;
        default:
          $output = 'That is not a valid FN parameter. Please check your string and try again';
          break;
      }
      $output = json_encode($output);
      if(is_array($output)){
        return $output;
      }else{
        echo $output;
      }
    die();
    }
    
    function ajax_user_meta($id){
        $theMeta = get_user_meta( $id, 'tel', true );
      return $theMeta;
    }
    

    我的js文件

    jQuery('.list-group-item').click(function() {
    
      var id = jQuery(this).attr('id');
      alert(id);
      jQuery.ajax({
        url: 'http://sub.domain.com/wp-admin/admin-ajax.php',
        url: absAjaxPath, //this one returns a not found error
        data: {'action' : 'ajax_request', 'fn': 'getUserMeta', 'id': id},
        dataType: 'json',
        success: function(data) {
          //We expect a JSON encoded array here, not an HTML template.
          alert(data);
        }
      });     
      return false;
    });
    

    这个 alert(id) 单击id设置为 2 。我用该id设置了一个用户。除此之外,什么都不会发生。不应该 alert(data) 在ajax成功函数触发器中?

    2 回复  |  直到 9 年前
        1
  •  1
  •   vaneayoung    11 年前

    尝试删除 dataType:'json' 让ajax自动检测

        2
  •  0
  •   Tomas Stark    11 年前

    添加 die(); 或 exit(); 通过AJAX调用的PHP函数的最后一行,以防止返回 0 .