如何使用Javascript从Ajax获取变量

时间:2016-06-22 19:12:54

标签: javascript php jquery ajax

下面我添加了名为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,如果它是真的,请将其读取?

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

3 个答案:

答案 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);