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.