AJAX запрос - Ошибка загрузки ресурса: сервер ответил со статусом 500 (Внутренняя ошибка сервера)

30 июн. 2018 г., 16:39:13
Просмотры: 21.9K
Голосов: 0

Пожалуйста, помогите. У меня есть простой плагин, который использует AJAX запрос. Когда я вызываю другую функцию внутри PHP функции для AJAX (в примере ниже я вызываю функцию get_cat() из функции update_passage_list()), я получаю ошибку "Failed to load resource: the server responded with a status of 500 (Internal Server Error)".

quiz.js:

$jq =jQuery.noConflict();

$jq(document).ready(function($jq) {
    update_passage_list(32);
});

var update_passage_list = function(id){
    $jq.post(quiz.ajaxURL, {
        action:"update_passage_list",
        nonce:quiz.quizNonce,
        cpid : id
    }, function(return_data) {
        alert('Возвращаемые данные = ' + return_data);
    }, "json");  
};

index.php:

<?php

/*
  Plugin Name: WP Quiz
  Plugin URI: -
  Description: Описание плагина.
  Author: Имя Автора
  Version: 1.0
  Author URI: url
 */

class WP_Quiz {

    public $plugin_url;

    public function __construct() {
        $this->plugin_url = plugin_dir_url(__FILE__);

        add_action('admin_enqueue_scripts', array($this, 'wpq_admin_scripts'));

        add_action('wp_ajax_nopriv_update_passage_list', array($this, 'update_passage_list'));
        add_action('wp_ajax_update_passage_list', array($this, 'update_passage_list'));
    }

    function wpq_admin_scripts() {
        wp_enqueue_script('jQuery');
        wp_register_script('quiz-admin', plugins_url('js/quiz.js', __FILE__), array('jquery'));
        wp_enqueue_script('quiz-admin');

        $config_array = array(
            'ajaxURL' => admin_url('admin-ajax.php'),
            'quizNonce' => wp_create_nonce('quiz-nonce'),
            'plugin_url' => $this->plugin_url
        );

        wp_localize_script('quiz-admin', 'quiz', $config_array);
    }

    public function get_cat($id) {
        $new_id = $id + 100;
        return $new_id;
    }

    function update_passage_list() {
        $cpid = $_POST['cpid'];
        $cpid = get_cat($cpid);
        echo $cpid;
        die();
    }
}

$quiz = new WP_Quiz();
1
Комментарии

Когда вы получаете ошибку 500, сервер должен был записать реальную ошибку в лог ошибок PHP сервера — проверьте его в первую очередь.

Milan Petrovic Milan Petrovic
30 июн. 2018 г. 21:27:43
Все ответы на вопрос 1
2

Я вызываю функцию get_cat() из функции update_passage_list()

Вот что вы делаете:

$cpid = get_cat($cpid);

Здесь нет указания, что get_cat() является методом вашего класса. Код пытается найти функцию get_cat() вне какого-либо класса. Чтобы использовать метод класса, вам нужно использовать $this:

$cpid = $this->get_cat($cpid);
30 июн. 2018 г. 16:55:04
Комментарии

ещё один вопрос: если я хочу вернуть строку из функции get_cat(), я не получаю значение. Не уверен, что упускаю? спасибо

user146122 user146122
30 июн. 2018 г. 17:27:20

Неважно, echo json_encode('string'); сработало. Ещё раз спасибо.

user146122 user146122
30 июн. 2018 г. 17:37:53