MySQL wählt das Ergebnis in der JS-Funktion aus

8

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%     
lStoilov 14.11.2017, 14:18
quelle

4 Antworten

1

So kann ich mit der Hilfe von Stamos arbeiten

%Vor% %Vor% %Vor%

und in der appi.php habe ich diesen Code

%Vor%
    
lStoilov 24.11.2017, 13:02
quelle
6

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

    
Ghost 18.11.2017 17:04
quelle
4

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>     

Rick James 16.11.2017 22:28
quelle
1

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

%Vor%

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

erhalten

Lösung

Einfache Lösung ist Change Ajax zu synchronen Aufruf async:false , das ist keine Best Practice.

%Vor%

Besser ist es, den Erfolgsrückruf zu verwenden

Beispiel:

%Vor%     
Stamos 23.11.2017 14:38
quelle

Tags und Links