如何使用Javascript从Ajax获取变量

如何使用Javascript从Ajax获取变量,javascript,php,jquery,ajax,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($che

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

我一直在到处寻找,但我不知道。我最近开始学习编码,所以我希望有人能教我怎么做。我要感谢每一位事先帮忙的人

//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是另一个文件


//假设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);
函数检查消息(){
$.get(“),函数(checkmes){
//这里的checkmes是一个JavaScript变量,包含从checkMessages.php返回的数据
if(checkmes==“true”){
refreshChat();
}
}); 
setInterval(函数(){
检查消息();
}, 1000);

要回答您的问题,为了能够获取变量
$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);
函数检查消息(){
$.get(“),函数(checkmes){
//这里的checkmes是一个JavaScript变量,包含从checkMessages.php返回的数据
if(checkmes==“true”){
refreshChat();
}
}); 
setInterval(函数(){
检查消息();
}, 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);
函数检查消息(){
var myUrl='';
myUrl+='/ajax/checkMessages.php';
$.get(myUrl,函数(数据){
如果(数据){
refreshChat();
}
});
}
setInterval(函数(){
检查消息();
}, 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);
函数检查消息(){
var myUrl='';
myUrl+='/ajax/checkMessages.php';
$.get(myUrl,函数(数据){
如果(数据){
refreshChat();
}
});
}
setInterval(函数(){
检查消息();
}, 1000);

你忘了在什么地方引用了一句话。从理解服务器和客户端之间的基本区别开始。@u\u mulder感谢你指出这一点。如果我是对的,ajax是服务器端,javascript是客户端。我想如果我运行setinterval,javascript可以从ajax文件中读取一个变量,如果是真的,则运行另一个函数。well、 不,ajax是客户端的,它向服务器发送http请求,就像浏览器在导航到网页时所做的那样。然后它返回发送到ajax回调的纯文本。因此…php需要以与发送正常页面的html相同的方式向输出写入内容。例如,在通知上是否有一些状态例如:readed和unreaded?…如果您从服务器返回json响应而不是
ToF
,则更有意义(请参阅)对于该特定用户的所有未读通知…您忘记了在某处引用。请从了解服务器和客户端之间的基本区别开始。@u\u mulder感谢您指出这一点。如果我是对的,ajax是服务器端和javascript客户端。我想如果我运行setinterval,javascript可以从ajax文件,如果为真,则运行另一个函数。不,ajax是客户端的,它向服务器发送http请求,就像浏览器在导航到网页时所做的那样。然后它返回发送到ajax回调的纯文本。因此…php需要以与正常页面发送html相同的方式向输出写入内容。通知上是否有一些状态,例如:已读和未读?…如果您不使用
ToF
从服务器返回json响应(请参阅),而使用该特定用户的所有未读通知,则更有意义。。。