Llamada AJAX - Error al cargar el recurso: el servidor respondió con un estado 500 (Error Interno del Servidor)

30 jun 2018, 16:39:13
Vistas: 21.9K
Votos: 0

Por favor ayuda. Tengo un plugin simple que usa una llamada ajax. Cuando llamo a otra función dentro de la función php de ajax (en el ejemplo siguiente estoy llamando a la función get_cat() desde la función update_passage_list()) obtengo el error "Error al cargar el recurso: el servidor respondió con un estado 500 (Error Interno del Servidor)".

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('Datos Retornados = ' + return_data);
    }, "json");  
};

index.php:

<?php

/*
  Plugin Name: WP Quiz
  Plugin URI: -
  Description: Descripción del plugin.
  Author: Nombre del Autor
  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
Comentarios

Cuando recibes un error 500, el servidor debería haber registrado el error real en el registro de errores PHP del servidor, verifica eso primero.

Milan Petrovic Milan Petrovic
30 jun 2018 21:27:43
Todas las respuestas a la pregunta 1
2

Estoy llamando a la función get_cat() desde la función update_passage_list()

Esto es lo que estás haciendo:

$cpid = get_cat($cpid);

No hay nada ahí que indique que get_cat() sea un método de tu clase. Está intentando encontrar una función get_cat() fuera de cualquier clase. Para usar el método de la clase necesitas usar $this:

$cpid = $this->get_cat($cpid);
30 jun 2018 16:55:04
Comentarios

una pregunta más, si quiero retornar un string de la función get_cat() no obtengo el valor. No estoy seguro de qué me falta. gracias

user146122 user146122
30 jun 2018 17:27:20

No importa, echo json_encode('string'); hizo el truco. Muchas gracias de nuevo.

user146122 user146122
30 jun 2018 17:37:53