Ajax post возвращаемое значение - PullRequest
5 голосов
/ 04 сентября 2010

Я использую Ajax для отправки значений в PHP-скрипт, который записывает какое-то значение в базу данных:

$.ajax({
    type: "POST",
    data: "action=vote_down&id="+$(this).attr("id"),
    url: "vote.php",
    success: function(msg) {
        $("span#votes_count"+the_id).fadeOut();
        $("span#votes_count"+the_id).html(msg);
        $("span#votes_count"+the_id).fadeIn();                      
    }
});

Как вы, вероятно, можете сказать из action=vote_down, сценарий предназначен для сценария голосования.

Я уже запрещаю пользователю голосовать более одного раза, войдя туда и проголосуйте против там имени пользователя и идентификатора в vote.php, и если там есть имя пользователя и идентификатор в той же записи в БД, то я не добавляю голосв БД.

Лично я считаю, что запросы к базе данных при каждой загрузке страницы для проверки, если пользователь уже проголосовал, могут быть довольно интенсивными, есть много мест для голосования на одной странице.

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

Любые идеи для лучшего подхода к этому

Ответы [ 2 ]

2 голосов
/ 04 сентября 2010

Используйте JSON

Если это ваш файл для отображения формы голосования:

<div id='voteform-div'>
 <form id='voteform'>
   Your form elements and a submit button here.
 </form>
</div>

Ваш код JS выглядит следующим образом:

jQuery('#voteform').live('submit',function(event) {
    $.ajax({
        url: 'vote.php',
        type: 'POST',
        data: "action=vote_down&id="+$(this).attr("id"),
        dataType: 'json',
        success: function( messages) {
            for(var id in messages) {
                jQuery('#' + id).html(messages[id]);
            }
        }
    });
    return false;
});

ваш voice.php должен выглядеть примерно так:

// Get data from $_POST array.

if( Already voted ) {

  // It will replace the id='voteform-div' DIV with error message
  $arr = array ( "voteform-div" => "you have already voted." ); 

} else {

 // Store vote in database

  // It will replace the id='voteform-div' DIV with confirmation message
  $arr = array ( "voteform-div" => "Yor vote is submitted. Thanks" );

}

echo json_encode( $arr ); // encode array to json format

Подробнее об этом см. этот вопрос .

1 голос
/ 04 сентября 2010

Это должно привести вас в правильном направлении ...

http://forum.jquery.com/topic/jquery-ajax-and-php-variables

Я бы проанализировал логическое значение false, если они уже опубликованы, или идентификатор голосования, еслибыли успешными (для стилизации / добавления HTML-сообщения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...