【问题标题】:Failed to load resource: the server responded with a status of 500 (Internal Server Error) on AJAX call加载资源失败:服务器在 AJAX 调用上响应状态为 500(内部服务器错误)
【发布时间】:2016-06-08 23:56:22
【问题描述】:

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

这是我的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);

有没有人可以为我的问题提出一些建议。

【问题讨论】:

  • 这是一个 wordpress 功能错误,但现在已修复。谢谢

标签: php jquery ajax wordpress


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    来自

    $link = get_term_link( $tid );
    

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2018-01-22
      • 2014-11-24
      • 2021-07-27
      • 1970-01-01
      相关资源
      最近更新 更多