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

user146122
3
Commenti
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);

Jacob Peattie
43.9K
30 giu 2018 16:55:04
Domande correlate
3
risposte