繁体   English   中英

如何使用Javascript从Ajax获取变量

[英]How to get a variable from Ajax with Javascript

我在下面添加了名为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检查是否有新消息,并且我进行了checkMessages()来执行功能checkMessages()checkMessages()调用ajax脚本。

因此,如果有新消息,则变量$checkmes设置为true。 并且,如果为true,则javascript应执行其他函数refreshChat()

但是我的问题是,我如何从带有JavaScript的checkMessages.php中获取变量$ checkmes,如果它是正确的,则读取它吗?

我一直在寻找高低,但我不知道。 我最近开始学习编码,所以我希望有人可以教我如何做到这一点。 我要感谢每个事先提供帮助的人。

//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是一个不同的文件

为了回答您的问题,为了能够获取$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);

首先,您需要对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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM