CAEYO Geschrieben 27. Februar 2017 Geschrieben 27. Februar 2017 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 Zitieren
etreu Geschrieben 27. Februar 2017 Geschrieben 27. Februar 2017 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. CAEYO reagierte darauf 1 Zitieren
pr0gg3r Geschrieben 27. Februar 2017 Geschrieben 27. Februar 2017 (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 27. Februar 2017 von pr0gg3r CAEYO reagierte darauf 1 Zitieren
CAEYO Geschrieben 27. Februar 2017 Autor Geschrieben 27. Februar 2017 (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 27. Februar 2017 von CAEYO pr0gg3r reagierte darauf 1 Zitieren
Empfohlene Beiträge
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.