2016-06-22 2 views
0

Underneath я добавил мой AJAX скрипт с именем checkMessages.php:Как получить переменную из Ajax с Javascript

$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().

Но мой вопрос в том, как я могу получить переменную $ checkmes из checkMessages.php с javascript, прочитать ее, если это правда?

Я искал высоко и низко, но я понятия не имею. Недавно я начал узнавать о кодировании, поэтому я надеюсь, что кто-то научит меня, как это сделать. Я хотел бы поблагодарить всех, кто помогает заранее.

+1

Вы где-то забыли цитату. –

+2

И начните с понимания основных различий между сервером и клиентом. –

+0

@u_mulder спасибо, что указали это. Если я прав, ajax - сторона сервера и javascript. Я думал, что если бы я запускал setinterval, javascript мог бы читать переменную из файла ajax и, если true, запускать другую функцию. – Aurora

ответ

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

Чтобы ответить на ваш вопрос, для того, чтобы иметь возможность получить переменную $checkmes вы должны сделать echo в вашем 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; 
} 

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