отображать данные js из базы данных sql

61
4

Я хотел бы нажать мою ценность текстового поля на sql, а затем отобразить его. Я читал много тем, но все равно ничего. У меня всегда есть проблема, чтобы объяснить мои проблемы, но я надеюсь, что вы увидите, что я хочу сделать escpecialy, когда вы посмотрите на db2.php

    $("#send").click(function(){

var username = "<span class ='username' = >Klient: </span>";
var newMessage = $("#textbox").val();
nw = newMessage;
$.ajax({
type: "POST",
url: "db2.php",
data: {'name': nw },
success: function (json) {
jss = json.PYT;
oss = json.ODP;
console.log(jss);
}

});
$("#textbox").val("");

var prevState = $("#container").html();

if( prevState.length > 3){
prevState = prevState + "<br>";
}

$("#container").html(prevState + username + newMessage);

$("#container").scrollTop($("#container").prop("scrollHeight"));

ai(newMessage);

});

и мой db2.php.

<?php
header('Content-type: application/json');
include 'connect.php';

if (isset($_POST['name'])) {

$name = $_POST['name'];
$queryResult = $connect->query("select * from Chatbot where '$name' LIKE
CONCAT('%',PYT,'%')");
$result = array();
while($pomoc = $queryResult->fetch_assoc()){
$result[] = $pomoc;
}
}

echo json_encode($result);

Теперь мой результат {}, echo - null.

console.log(nw) VM289: 1 dsasa undefined Я знаю, как получить только вывод из ajax, но если я хочу нажать эти данные, все будет не так. С наилучшими пожеланиями

ОБНОВИТЬ. Теперь я хотел бы получить значение jss из этой функции в другую.

   var jss = {}; //(first line code)

$("#send").click(function(){

var username = "<span class ='username' = >Klient: </span>";
var newMessage = $("#textbox").val();
nw = newMessage;
$.ajax({
type: 'POST',
url: 'db2.php',
data: {
'name': nw,
},
success: function(data){
jss = data[0].PYT;

}
});

ОБНОВЛЕНИЕ 2

var jss2 = {};
var nw;

$(function(){

username();

$("#textbox").keypress(function(event){
if ( event.which == 13) {
if ( $("#enter").prop("checked") ){

$("#send").click();
event.preventDefault();
}
}
});
$("#send").click(function(){

var username = "<span class ='username' = >Klient: </span>";
var newMessage = $("#textbox").val();

$("#textbox").val("");

var prevState = $("#container").html();

if( prevState.length > 3){
prevState = prevState + "<br>";
}

$("#container").html(prevState + username + newMessage);

$("#container").scrollTop($("#container").prop("scrollHeight"));

ai(newMessage);

});

})

function send_message(message){

var prevState = $("#container").html();

if(prevState.length > 3){
prevState = prevState + "<br>";
}

$("#container").html(prevState + "<span class = 'bot'>Chatbot: </span>" + message);
}
function username(){
$("#container").html("<span class = 'bot'>Chatbot: </span>Hi!");
}
function myFunction() {
var x = document.getElementById("textbox").value;

}

function ai(message){
var jss;
message = message.toLowerCase();
nw = message;

$.ajax({
type: 'POST',
url: 'db2.php',
data: {
'name': nw,
},
success: function(data){
jss = data[0].PYT;

}
});

console.log(jss);
if ((message.indexOf(jss)>=0) || (message.indexOf("?")>=0)){
send_message(Answer);
return;
}

else{
send_message("Nope ");
}

}

спросил(а) 2021-01-19T17:33:57+03:00 2 месяца, 3 недели назад
1
Решение
75

Я думаю, что это то, что вам нужно делать с вашей функцией, чтобы вы могли правильно использовать jss переменную, как только запрос ajax будет завершен:

function ai(message){
var jss;
message = message.toLowerCase();
nw = message;

$.ajax({
type: 'POST',
url: 'db2.php',
data: {
'name': nw,
},
success: function(data){
jss = data[0].PYT;
console.log(jss);
if ((message.indexOf(jss)>=0) || (message.indexOf("?")>=0)){
send_message(Answer);
return;
}
else{
send_message("Nope ");
}
}
});
}

Любой код, который зависит от переменной jss не должен выполняться до тех пор, пока не завершится вызов ajax. Поскольку вызовы ajax выполняются асинхронно, единственный способ гарантировать это - это тот код, который должен быть включен (вызван) функцией обратного вызова "success" в вашем запросе ajax.

ответил(а) 2021-01-19T17:33:57+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема