PHP Funktion aufrufen?


20.01.2023, 08:52

ignoriert das test3(); das hat nix zusagen und soll da eigentlich nicht aber frage bleibt die gleiche. Fehlermeldung ist:

Uncaught SyntaxError: Unexpected token '<' (at Chat1.php:87:17)

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Man schreibt nicht einfach so den PHP code in javascript rein😑
Man kann in Javascript keinen PHP Code reinschreiben, umgekehrt schon, da wird der JavaSccript Code mit echo ausgegeben, auch eine ungewöhnliche methode.

Ein Beispiel dafür, wie man eine JavaScript-Funktion in PHP aufrufen kann, wäre folgendermaßen:

  1. Erstellen Sie eine JavaScript-Funktion, die eine Variable namens "var1" enthält und diese an ein PHP-Skript überträgt.
function sendToPHP() {
  var var1 = "Hallo Welt";
  $.post("script.php", {data: var1});
}
  1. Erstellen Sie ein PHP-Skript namens "script.php", in dem die Variable "var1" empfangen und in eine PHP-Funktion übergeben wird.
<?php
  $var1 = $_POST['data'];
  myPHPFunction($var1);
  function myPHPFunction($var) {
   echo "Die übergebene Variable ist: " . $var;
  }
?>
  1. Rufen Sie die JavaScript-Funktion "sendToPHP" auf, um die Variable an das PHP-Skript zu übertragen und die PHP-Funktion "myPHPFunction" aufzurufen.
<button onclick="sendToPHP()">Send to PHP</button>

Babelfish  20.01.2023, 14:52

$.post ist jQuery und kein reines/vanilla Javascript.

Schau dir einfach mal dein Quellcode im Browser an, was dann in deiner Javascript-Funktion drin steht. Vermutlich gibt dein Chat2.php irgendwelches HTML aus.

PHP wird auf dem Server ausgeführt und an den Browser wird dann nur die Ausgabe vom Script gesendet. PHP wird also lange vor deinem Javascript ausgeführt und du kannst in Javascript (Browser) keine PHP-Funktion (Server) aufrufen.

Du kannst aber in PHP auch Javascript generieren, was dann wiederum auf dem Server ausgeführt wird:

<?php
  $foo = 'Hello, World!';

  echo '<script>alert("'.$foo.'");</script>';
?>

Im HTML steht dann:

<script>alert("Hello, World!");</script>

So kannst du auch bestimmte Daten austauschen.

Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.

Lenzer66u 
Beitragsersteller
 20.01.2023, 09:52

mein Problem ist das der Quellcode den PHP Teil nicht akzeptiert


 function PersonXSenden()
 {
   InhaltPersonX = document.getElementById("X").value;
   console.log(InhaltPersonX);
   document.cookie = "XCookie = " + InhaltPersonX;

   <?php
      $myfile = fopen("ChatDatei.txt", "a") or die("Fehler");
                    
      $InhaltX = array();
      $test = $_COOKIE['XCookie'];

       array_push($InhaltX,$test);
       fwrite($myfile, "PersonX: " . $InhaltX[0] . "\n");
    ?>
 }

Fehlermeldung:

Uncaught SyntaxError: Unexpected token '<' (at Chat1.php:86:17)
Babelfish  20.01.2023, 10:15
@Lenzer66u

Noch mal, du kannst in einer Javascript-Funktion keinen PHP-Code ausführen. PHP-Code wird auf dem Webserver ausgeführt, das Ergebnis wird dann zum Browser gesendet, dieser verarbeitet das HTML und führt dann ggf. Javascript aus. PHP gibt es da nicht mehr.

Wenn du Daten vom Client an den Server senden willst, dann mach das am besten über einen Fetch-Request in Javascript.

Hier ein einfaches Beispiel:

Javascript

fetch("/chat.php", {
	method: "POST",
	headers: {"Content-Type" : "application/json"},
	body: JSON.stringify({
		action: "add",
		line: "Neue Chat-Nachricht.",
		user: "Horst",
	}),
})
.then(response => response.json())
.then(result => {
	if (result.status == "success") {
		console.log(":-)")
	} else {
		alert(result.message);
	}
})
.catch(error => {
	console.error(error);
});

PHP

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_SERVER['CONTENT_TYPE'] == 'application/json') {
	$request = json_decode(file_get_contents("php://input"));
	
	if ($request->action == 'add') {
		$myfile = fopen("ChatDatei.txt", "a") or die("Fehler");
						
		fwrite($myfile, $request->user.": " .$request->line. "\n");
		
		die(json_encode((object)['status' => 'success']));
	}
	
	die(json_encode((object)['status' => 'error', 'message' => 'Ein Fehler ist aufgetreten']));
}

Ungetestet aber sollte vom Prinzip funktionieren.

elmex7  20.01.2023, 14:49
@Lenzer66u

Du hast nur einen Teil des Codes gepostet. Das sind keine 86 Zeilen, wie die Fehlermeldung sagt.