Apel AJAX - Eroare la încărcarea resursei: serverul a răspuns cu status 500 (Eroare Internă Server)

30 iun. 2018, 16:39:13
Vizualizări: 21.9K
Voturi: 0

Vă rog să mă ajutați. Am un plugin simplu care folosește apeluri ajax. Când încerc să apelez o altă funcție în cadrul funcției php pentru ajax (în exemplul de mai jos apelez funcția get_cat() din funcția update_passage_list()) primesc eroarea "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('Date returnate = ' + return_data);
    }, "json");  
};

index.php:

<?php

/*
  Plugin Name: WP Quiz
  Plugin URI: -
  Description: Descriere plugin.
  Author: Nume 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
Comentarii

Când primești o eroare 500, serverul ar fi trebuit să înregistreze eroarea reală în jurnalul de erori PHP al serverului, verifică-l mai întâi.

Milan Petrovic Milan Petrovic
30 iun. 2018 21:27:43
Toate răspunsurile la întrebare 1
2

Eu apelez funcția get_cat() din funcția update_passage_list()

Asta este ceea ce faci:

$cpid = get_cat($cpid);

Nu există nimic care să indice că get_cat() este o metodă a clasei tale. Codul încearcă să găsească o funcție get_cat() în afara oricărei clase. Pentru a utiliza metoda clasei, trebuie să folosești $this:

$cpid = $this->get_cat($cpid);
30 iun. 2018 16:55:04
Comentarii

încă o întrebare, dacă vreau să returnez un șir din funcția get_cat() nu primesc valoarea. Nu sunt sigur ce îmi scapă? mulțumesc

user146122 user146122
30 iun. 2018 17:27:20

Nu contează, echo json_encode('string'); a funcționat. Mulțumesc din nou.

user146122 user146122
30 iun. 2018 17:37:53