如何使用Javascript从Ajax获取变量
在下面,我添加了名为checkMessages.php的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
$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响应(请参阅),而使用该特定用户的所有未读通知,则更有意义。。。