Вернуть переменную php после действия AJAX? - PullRequest
0 голосов
/ 25 августа 2011

Когда я нажимаю на кнопку моей страницы, я делаю следующее действие:

$.ajax({
type: "POST",
url: "index.php?module=pages&action=afficher_page&id=<?php echo $_GET['id']; ?>", 
data:"vote="+vote,
success: function(){
alert("Vote done");

}

Затем страница URL получает мою переменную POST для обработки голоса:

<?php   
// I get the timestamp of the last user's vote
list($last_timestamp) = get_last_timestamp($_SESSION['id'], $_GET['id']);

// I get the server timestamp
$timestamp_click=time();

if($timestamp_click-$last_timestamp > $time_limit){ 
   $authorization_vote=false;
}else{
    $authorization_vote=true;
}

Я хотел бы вернуться и отправить $ autorisation_vote в AJAX или jQuery, чтобы предупредить пользователя, если его голос сделан.Я слышал об обратном вызове, но мне не удалось приспособиться к моему делу.Как это сделать?

Ответы [ 2 ]

1 голос
/ 25 августа 2011

есть несколько способов сделать это.

Быстрый и грязный способ состоит в том, чтобы просто отобразить "true" или "false" в вашем PHP, и это будет доступно в функции обратного вызова, если вы объявите это следующим образом

$.ajax({
    type: "POST",
    url: "index.php?module=pages&action=afficher_page&id=<?php echo $_GET['id']; ?>", 
    data:"vote="+vote,
    success: function(data){
       alert(data);
    }

или вы можете установить заголовок http, чтобы он возвращал код состояния, который позволил бы вам объявить две обратные вызовы в вашем вызове ajax при успехе или неудаче

PHP будет выглядеть так

<?php   
// I get the timestamp of the last user's vote
list($last_timestamp) = get_last_timestamp($_SESSION['id'], $_GET['id']);

// I get the server timestamp
$timestamp_click=time();

if($timestamp_click-$last_timestamp > $time_limit){ 
    header("HTTP/1.0 423 Locked"); // The resource that is being accessed is locked
}else{
    header("HTTP/1.0 204 No Content"); // Processed, but not returning content
}

и ваш вызов ajax может выглядеть так

$.ajax({
    type: "POST",
    url: "index.php?module=pages&action=afficher_page&id=<?php echo $_GET['id']; ?>", 
    data:"vote="+vote,
    statusCode: {
       204: function(){ alert("Vote cast"); },
       423: function(){ alert("Vote not cast for whatever reason..."); }
    }

Что, вероятно, немного излишне, но хорошо знать эти вещи.

0 голосов
/ 25 августа 2011
$.ajax({
type: "POST",
url: "index.php?module=pages&action=afficher_page&id=<?php echo $_GET['id']; ?>", 
data:"vote="+vote,
success: function(data){
   alert(data);
}

(примечание добавлено data)

и в вашем php-сценарии добавьте

echo "vote done and some data here";

, поскольку true изменяется на 1, а false будет пустым

Пример:

if($timestamp_click-$last_timestamp > $time_limit){ 
   $authorization_vote=false;
   echo "voted";
}else{
    $authorization_vote=true;
    echo "vote failed";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...