Ich habe ein einfaches JS Skript gefunden, das als Chatbot funktioniert. Im Skript selbst sind die Ergebnisse von lastUserMessage inline wie
vordefiniert %Vor%Was ich erreichen möchte, ist, dass JS in einer db nach lastUserMessage sucht und von dort botMessage bereitstellt.
Ich bin sicher, es sollte nicht so schwer sein, aber ich kann nicht herausfinden, wie es geht.
Hier ist der JS Code:
%Vor%Hier ist der HTML-Code
%Vor%Was muss passieren?
Idealerweise sollte das Skript die Werte " lastUserMessage " und " botMessage " aus einer db mit 2 Spalten " lastUserMessage " und " botMessage ".
Ich habe versucht, Ghosts Kommentar unten zu folgen ... hat aber nicht funktioniert.
%Vor%Und in DB_query.php habe ich
%Vor%Das von Ihnen ausgeführte Javascript wird derzeit im Browser ausgeführt, ist jedoch nicht mit einer Datenbank verbunden, von der Sie Daten abrufen können.
Um dies zu tun, müssten Sie eine POST- oder GET-Anfrage an Ihren Backend-Server senden (vorausgesetzt, Sie haben eine), die, wie ich annehme, in JS geschrieben ist, mit NodeJS.
Beachten Sie, dass Sie NEVER dem Benutzer Zugriff auf die Datenbank geben sollten (zB verbinden Sie die Datenbank mit dem Code, den Sie gerade verwenden, der in einem Browser ausgeführt wird) Sie können dann machen, was sie wollen.
Wenn Sie in NodeJS nachsehen möchten und wie Sie Anfragen bearbeiten können, sollten Sie sich die ExpressJS und dieses großartige MySQL + NodeJS-Tutorial auf W3Schools je nach Ihrem Kenntnisstand
Javascript wird im Browser des Clients ausgeführt. MySQL läuft auf dem Server. Also, etwas anderes ist notwendig, um sie zu verbinden.
Ich benutze PHP und AJAX als Verbindung zwischen ihnen. JS gibt einen AJAX-Aufruf aus. (Hinweis: "A" steht für "Asynchronous".) Dann erhält JS die Ergebnisse über einen "Callback". In der Zwischenzeit ist das Ziel des AJAX-Aufrufs ein PHP-Programm (oder Java oder VB oder ...), das sich mit der Datenbank (MySQL) verbindet und das SELECT
ausführt und das JSON erstellt, um es an JS zurückzugeben. p>
hast du bestätigt, dass db_query.php
funktioniert?
Versuchen Sie, POSTMAN oder Broswer wie Chrome zu verwenden, um die URL ex zu treffen. localhost/db_query.php
oder die richtige und sehen, ob Sie das Ergebnis erhalten, das Sie erwarten.
Wenn Sie das erwartete Ergebnis erhalten, stimmt etwas mit Ihnen nicht.
$. ajax ist asynchron, daher wird es aufgerufen und die JavaScript-Ausführung wird fortgesetzt.
Ich versuche es zu erklären. Sie rufen chatbotResponse()
hexe ruft% $.ajax
auf success
setzt die Daten
ABER $ .ajax ist asynchron, daher wird die JavaScript-Ausführung fortgesetzt. SO wird dieser JavaScript-Code ausgeführt, bevor der Erfolg
genannt wird %Vor% Das Problem ist also, dass der obige Code ausgeführt wird, bevor Sie lastUserMessage
von db_query.php
Lösung
Einfache Lösung ist Change Ajax zu synchronen Aufruf async:false
, das ist keine Best Practice.
Besser ist es, den Erfolgsrückruf zu verwenden
Beispiel:
%Vor%Tags und Links javascript html mysql