Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Moin Moin,

ich soll mich auf Arbeit das erste mal intensiv mit Web - Entwicklung auseinander setzen und Ecke dabei an einige Probleme. Mein Problem ist, dass ich versuche eine Globale Variable nach einer User - Interaktion (Button Click) zu verändern.

Ich stoße dabei allerdings immer wieder auf den Server Fehler 500, die kompletten Exception - Informationen, die ich habe hänge ich weiter unten an, wobei die eigentlich relativ nix sagend sind.

Kurze Anmerkung: Ich habe das Projekt mit dem MVC Pattern versucht zu realisieren, demnach OOP. Als IDE nutze ich Visual Studio mit der PHPTools Erweiterung.

Mein Ajax - Script sieht wie folgt aus:

// Funktion wird über Button aufgerufen und übergibt entsprechende Parms.
function ajx_switchView() {
    CallMethod("GET", 'AJX_Handler.php', 'switchView', onSuccess)
}

/*
 * AJAX BASE 
*/
function CallMethod(type, url, param, successCallback) {
    $.ajax({
        type:       type,
        url:        url,
        data:       { param: param, url: url },
        cache:      false,
        success:    successCallback,
        error:      onError
    })
}

// Erfolgreiche Ausführung.
function onSuccess(response_in) {
    console.log(
        "Server_Response: ", response_in
    );
}

// Gibt Fehlermeldung aus.
function onError(xhr, txtStatus, errThrown) {
    console.log(
        "XMLHttpRequest: ", xhr,
        " Status:", txtStatus,
        " Error:",  errThrown
    );
}

 

Mein Ajax - Handler:

<?php
define('__ROOT__', dirname(dirname(__FILE__) . '\\DMC'));
require_once(__ROOT__ . '\\Controller\\HeaderController.php');

$mHandler = new Handler();
$mHandler->CallMethode();

// Ajax - Handler - Klasse
class Handler {
    private $param = $_POST['param'];

    // Ruft entsprechende Methode für Programmsteuerung auf.
    function CallMethode(){
        switch(self::$param) {
            case 'switchView':
                echo "SwitchView";
                break;
            case 'PLATZHALTER':
                break;
            default:
                echo 'Fehler!';
        }
    }
}
?>

 

Anzumerken sei, dass ich das Ganze erstmal so vereinfacht habe, sprich so wie ich es geposted habe, soll es mir erstmal nur eine Variable zurück geben, mit der ich schauen kann, ob alles richtig funktioniert. Im Produktiven Umfeld werden die Funktionen natürlich auch einen Zweck haben.

Meine momentane Annahme ist, dass die Globale Variable "param" nicht vorhanden ist und es mir deswegen den Fehler auswirft. Doch selbst wenn ich diesen Code ausführe

<?php
 echo "Test"

 // usw...
?>

.. kommt der gleiche Fehler, was meine Theorie entkräftet.

Konsolenausgabe (Error): 

POST http://localhost:57162/AJX_Handler.php 500 (Internal Server Error)
(anonymous) @ VM47:2
send @ jquery.min.js:4
ajax @ jquery.min.js:4
CallMethod @ ajax.js:11
ajx_switchView @ ajax.js:4
onclick @ index.php?XDEBUG_SESSION_START=C2226D1F:36


Object {
readyState: 4, responseText: "", status: 500, statusText: "Internal Server Error"}
abort: (a)always: ()catch: (a)done: ()fail: ()getAllResponseHeaders: ()arguments: (...)caller: (...)length: 0name: "getAllResponseHeaders"
prototype: Object__proto__: ()[[FunctionLocation]]: jquery.min.js:4
[[Scopes]]: Scopes[3]getResponseHeader: (a)overrideMimeType: (a)pipe: ()progress: ()promise: (a)readyState: 4responseText: ""
setRequestHeader: (a,b)state: ()status: 500statusCode: (a)statusText: "Internal Server Error"then: (b,d,e)
__proto__: Object  Status: error  Error: Internal Server Error

Hoffe mir kann jemand helfen, da ich absolut auf dem Schlauch stehe und auch nach mehreren Stunden das Problem bisher noch nicht lösen konnte.

Viele Grüße,
Eric

Geschrieben (bearbeitet)

Du willst einen GET-Request machen, in der Console steht aber "POST ....". Daraus resultiert der internal error, der ja darauf hinweist, dass du etwas aufrufst, was er so nicht verarbeiten kann (was ja stimmt, wenn du den Fall "POST url" nicht mit einer Route abdeckst). 

Das Problem kommt vermutlich daher, dass du $.ajax({....}) mit type: type fütterst, statt mit method: post/get/..., also "method: type" verwenden musst. 

Bearbeitet von pr0gg3r
Geschrieben (bearbeitet)

Danke für eure Antworten.

Zitat

Ich bin etwas raus aus der PHP-Thematik. Aber "früher" war es so dass man nur nutzen konnte, was bereits bekannt war -> deine Klasse wird erst nach der Verwendung deklariert.

Das wars. Habs im Programmeinstiegspunkt per require_once eingebunden und schon geht es. Habe zwar noch keinen respond vom Server, aber das schaff ich jetzt glaube schon. Danke!

 

Zitat

Du willst einen GET-Request machen, in der Console steht aber "POST ....". Daraus resultiert der internal error, der ja darauf hinweist, dass du etwas aufrufst, was er so nicht verarbeiten kann (was ja stimmt, wenn du den Fall "POST url" nicht mit einer Route abdeckst).  ...

Danke für den Tipp. Ich hatte mal zu Debug Zwecken auf POST umgestellt, um zu schauen ob denn das AJAX - Script alles richtig verarbeitet. Hatte dann leider nur den Konsolen - Output von der einen Debug - Session genommen und und vergessen, dass ich es ja in der Weile schon wieder im Code geänder habe.

Kurz gesagt: Mein Fehler. Tut mir leid, dich auf die falsche Spur gelockt zu haben.

Bearbeitet von CAEYO

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...