无法加载资源:服务器在AJAX调用时响应状态为500(内部服务器错误)

时间:2016-06-08 14:29:02

标签: php jquery ajax wordpress

我不知道为什么这不起作用。我在我的本地浏览器上尝试过这个功能。但是当我尝试在我的实时网站上实现这一点时,就会出现错误。

这是我的functions.php

add_action( 'wp_ajax_get_myposts', 'ajax_get_myposts' );
add_action( 'wp_ajax_nopriv_get_myposts', 'ajax_get_myposts' );

function ajax_get_myposts() {

  $countterms = wp_count_terms( 'item_category' );
  $offset = 4;
  $number = $countterms - $offset;
  $terms = get_terms( 'item_category', array(
      'hide_empty' => true,
      'orderby'    => 'name', 
      'order'      => 'ASC',
      'offset'     => $offset,
      'number'     => $number,
  ) );

  echo '<div class="vc_row wpb_row vc_row-fluid home-category-row">
        <div class="wpb_column vc_column_container vc_col-sm-12">
  '; 

  if($terms) {

    foreach ($terms as $term ) {

      $tid = $term->term_id;
      $name = $term->name;
      $link = get_term_link( $tid );
      $item_cat_id = 'javo_item_category_' .$tid. '_featured';
      $src = wp_get_attachment_image_src( get_option($item_cat_id), array(270,250), false );
      $alt = get_post_meta( get_option($item_cat_id), '_wp_attachment_image_alt', true);

      echo  '

        <div class="wpb_column vc_column_container vc_col-sm-3">
        <div class="wpb_wrapper">
        <div class="category-box">
        <div class="category-box-overlay" style="background:rgba(0,0,0,0.5);"></div>
        <img src="'.$src[0].'" style="" class=" category-box-img ultb3-img-center" alt="'.$alt.'">
        <div class="category-info-box">
        <div class="category-box-title">'.$name.'</div>
        <a href="'.$link.'" class="category-box-btn ultb3-btn">View More<i class="Defaults-angle-right"></i></a>
        </div>
        </div> <!--  custom-category-box -->
        </div> <!--  wpb_wrapper -->
        </div> <!-- wpb_column -->
      ';

     }

  } else {
      echo  '<div>No posts</div>';
  }

   echo '</div></div>';

 wp_die();

}

我的Ajax电话

(function($) {

    'use strict';

    var main = {
        init: function() {
            this.myajax();
        },

        myajax: function() {
            $('button.myButton').on('click', function() {
                $.ajax({
                    type: 'POST',
                    url: '/wp-admin/admin-ajax.php',
                    dataType: 'html',
                    data: {
                        action: 'get_myposts'
                    },
                    beforeSend: function() {
                        $('#allpost').append('<img id="ajax-preloader" src="/wp-content/uploads/2016/06/Preloader_10.gif">');
                    },

                    success: function(result) {
                        console.log(result);
                        $('button.myButton').hide();
                        $('#allpost').hide().append(result).fadeIn();
                    },
                    error : function(e) {
                        console.log(e);
                    },

                    complete: function() {
                        $('body').find('#ajax-preloader').remove();
                    }   

                });
            });
        }
    };

    main.init();

})(jQuery);

有没有人可以为我的问题建议我。

2 个答案:

答案 0 :(得分:1)

您收到响应HTTP status code 500.这表示发生了服务器故障。在这种情况下,您的客户端javascript代码不应该是问题。

请检查您的本地开发环境与您的实时网站之间的差异(例如,网络服务器配置,php版本......)。

答案 1 :(得分:1)

我刚刚找到了解决办法。使用get_term_link函数有问题。

$link = get_term_link( $tid );

 $term_link = get_term_link( $term->slug, $term->taxonomy );

这很奇怪,因为get_term_link($ tid)在我当地工作。