Chiamata AJAX - Impossibile caricare la risorsa: il server ha risposto con uno stato 500 (Errore interno del server)

30 giu 2018, 16:39:13
Visualizzazioni: 21.9K
Voti: 0

Per favore aiuto. Ho un semplice plugin che utilizza una chiamata ajax. Quando chiamo un'altra funzione all'interno della funzione php ajax (nell'esempio sottostante sto chiamando la funzione get_cat() dalla funzione update_passage_list()) ottengo l'errore "Impossibile caricare la risorsa: il server ha risposto con uno stato 500 (Errore interno del server)".

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

index.php:

<?php

/*
  Plugin Name: WP Quiz
  Plugin URI: -
  Description: Descrizione del plugin.
  Author: Nome Autore
  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); // Chiamata alla funzione get_cat
        echo $cpid;
        die();
    }
}

$quiz = new WP_Quiz();
1
Commenti

Quando ricevi un errore 500, il server dovrebbe aver registrato l'errore reale nel log degli errori PHP del server, controlla prima quello.

Milan Petrovic Milan Petrovic
30 giu 2018 21:27:43
Tutte le risposte alla domanda 1
2

Sto chiamando la funzione get_cat() dalla funzione update_passage_list()

Questo è quello che stai facendo:

$cpid = get_cat($cpid);

Non c'è nulla che indichi che get_cat() sia un metodo della tua classe. Sta cercando una funzione get_cat() al di fuori di qualsiasi classe. Per utilizzare il metodo della classe devi usare $this:

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

un'altra domanda: se voglio restituire una stringa dalla funzione get_cat() non ottengo il valore. Non sono sicuro di cosa mi manchi? grazie

user146122 user146122
30 giu 2018 17:27:20

Non importa, echo json_encode('string'); ha funzionato. Grazie ancora.

user146122 user146122
30 giu 2018 17:37:53