[英]How to get variable value from PHP to Java Script via AJAX?
我创建了一个聊天网站。 我将带有 AJAX 的消息发送到 PHP 和 MySql 数据库。 使用每秒运行的 AJAX 获取消息。 但这导致获取所有消息(从开始到结束)。 我带来了一个解决方案,我将最后一条消息 ID 传递给 AJAX/JAVA SCRIPT,然后只获取比这更多的消息。
这是 Java Script/AJAX
function fetchdata(){
var cuser = //id of the current user
var ouser = //id of the other user
$.ajax({
url: "messagesprocess.php",
type: "POST",
data : {cuser:cuser, ouser:ouser},
success: function(read){
$("#readarea").html(read);
}
});
}
这是获取消息的 PHP 代码:
$sql = "SELECT id, fromid,message,toid FROM messages WHERE (fromid={$_POST['cuser']} AND toid={$_POST['ouser']}) OR (fromid={$_POST['ouser']} AND toid={$_POST['cuser']})";
$result = mysqli_query($conn, $sql) or ("Query Failed");
while($row=mysqli_fetch_assoc($result)){
if($row["fromid"]==$_POST['cuser']){
echo "<div class='cuser'>".$row["message"]."</div>";
}else{
echo "<div class='ouser'>".$row["message"]."</div>";
}
}
在这里,我想从 PHP 中获取 Java Script 函数中的 ID(消息),并将其用作一个变量来获取比它更多的消息。
您应该从 PHP 返回 JSON,而不是 HTML。 这样您就可以返回一个具有 ID、消息等属性的对象。然后您可以使用 Javascript 来存储最新的 ID,并将消息放入您的页面中,并带有相关的 HTML。
像这样的东西:
PHP:
$sql = "SELECT id, fromid,message,toid FROM messages WHERE (fromid={$_POST['cuser']} AND toid={$_POST['ouser']}) OR (fromid={$_POST['ouser']} AND toid={$_POST['cuser']})";
if (!empty($_POST["lastid"]) $sql .= " AND id > {$_POST['lastid']}";
$result = mysqli_query($conn, $sql) or ("Query Failed");
$messages = array();
while($row=mysqli_fetch_assoc($result)){
$messages[] = $row;
}
echo json_encode($messages);
JS:
//make this global so it persists beyond each call to fetchdata
var lastMessageID = null;
function fetchdata()
{
var cuser = //id of the current user
var ouser = //id of the other user
$.ajax({
url: "messagesprocess.php",
type: "POST",
dataType: "json",
data : { cuser: cuser, ouser: ouser, lastid: lastMessageID },
success: function(read) {
for (var i = 0; i < read.length; i++)
{
var className = "ouser";
if (read[i].fromid == cuser) classname = "cuser";
$("#readarea").append("<div class='" + className + "'>" + read[i].message + "</div>");
lastMessageID = read[i].id;
}
}
});
}
PS也请注意关于SQL注入的评论并紧急修复您的查询代码。 为了简洁起见,我没有在这里做,但不能忽略它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.