下面我添加了名为checkMessages.php的ajax脚本:
$user = $system->getUserInfo($_SESSION['user_id']);
$checkmes = $db->query("SELECT * FROM notifications WHERE receiver_id='".$user."' AND sent='0'");
$checkmes = $checkmes->fetch_object();
if(!empty($checkmes)) {
$checkmes = true;
} else{
$checkmes = false;
}
还有我试图创建的javascript:
function checkMessages() {
$.get("'.$system->getDomain().'/ajax/checkMessages.php, function(data){
$checkmes });
if $checkmes == true {
refreshChat();
}
}
window.setInterval(function(){
checkMessages();
}, 1000);
我想做的是以下内容。 checkMessages.php检查是否有新消息,我已经创建了一个setinterval来执行函数checkMessages()
并每秒调用一次ajax脚本。
因此,如果有新消息,则变量$checkmes
设置为true。如果是真的,javascript应该执行不同的函数refreshChat()
。
但是我的问题是,如何用javascript从checkMessages.php获取变量$ checkmes,如果它是真的,请将其读取?
我一直在寻找高低,但我不知道。我最近开始学习编码,所以我希望有人可以教我如何做到这一点。我要感谢所有提前帮助的人。
答案 0 :(得分:1)
//checkMessages.php
$user = $system->getUserInfo($_SESSION['user_id']);
$checkmes = $db->query("SELECT * FROM notifications WHERE receiver_id='".$user."' AND sent='0'");
$checkmes = $checkmes->fetch_object();
if(!empty($checkmes)) {
echo true;
}else{
echo false;
}
//javascript
function checkMessages() {
$.get($system->getDomain()+'/ajax/checkMessages.php', function(data){
if(data == 'true'){
refreshChat();
}
});
}
window.setInterval(function(){
checkMessages();
}, 1000);
//假设checkMessages.php是一个不同的文件
答案 1 :(得分:1)
要回答你的问题,为了能够得到变量$checkmes
,你必须在你的php中创建一个echo
,这样你的AJAX请求就可以读取你的数据(即它是真的还是是的,如此:
$user = $system->getUserInfo($_SESSION['user_id']);
$checkmes = $db->query("SELECT * FROM notifications WHERE receiver_id='".$user."' AND sent='0'");
$checkmes = $checkmes->fetch_object();
if(!empty($checkmes)) {
$checkmes = true;
} else{
$checkmes = false;
}
echo $checkmes;
然后,因为@u_mulder注意到你的php字符串连接似乎有点不正确,并且没有echo
,所以请确保你使用的是php标签,我建议你这样:
function checkMessages() {
$.get("<?php echo $system->getDomain().'/ajax/checkMessages.php' ?>", function(checkmes) {
// Here checkmes is a JavaScript variable and contains the data echoed from checkMessages.php
if (checkmes == "true") {
refreshChat();
}
});
window.setInterval(function(){
checkMessages();
}, 1000);
答案 2 :(得分:0)
首先,您需要对PHP脚本进行一些更改:
$user = $system->getUserInfo($_SESSION['user_id']);
$message = false;
$checkmes = $db->query("SELECT COUNT(1) AS CNTMESSAGES FROM notifications WHERE receiver_id='".$user."' AND sent='0'");
$checkmes = $checkmes->fetch_object();
//check the count value
if($checkmes->CNTMESSAGES > 0) {
$message= true;
}
//Json response
echo json_encode($message);
在你的Javascript中:
function checkMessages() {
var myUrl = '<?php echo $system->getDomain(); ?>';
myUrl + = '/ajax/checkMessages.php';
$.get(myUrl, function(data){
if(data){
refreshChat();
}
});
}
window.setInterval(function(){
checkMessages();
}, 1000);