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();

user146122
3
Комментарии
Все ответы на вопрос
1
2
Я вызываю функцию get_cat() из функции update_passage_list()
Вот что вы делаете:
$cpid = get_cat($cpid);
Здесь нет указания, что get_cat()
является методом вашего класса. Код пытается найти функцию get_cat()
вне какого-либо класса. Чтобы использовать метод класса, вам нужно использовать $this
:
$cpid = $this->get_cat($cpid);

Jacob Peattie
43.9K
30 июн. 2018 г. 16:55:04
Похожие вопросы
3
ответов