2010-09-04 4 views
5

Im en utilisant Ajax pour envoyer des valeurs à un script PHP qui écrit une valeur à une base de données:Ajax valeur post retour

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

Comme vous pouvez probablement dire à partir du action=vote_down le script est un script de vote. J'empêche déjà l'utilisateur de voter plus d'une fois en vous connectant là voter contre son nom d'utilisateur et ID en vote.php et si le nom d'utilisateur et ID est déjà dans la base de données contre le même poste, je ne pas ajouter le vote à la DB.

Je pense personnellement qu'interroger la base de données sur chaque page de chargement pour vérifier si l'utilisateur a déjà voté pourrait être assez intensif, il y a beaucoup d'endroits pour voter sur une seule page. Donc à la place, je vais montrer à l'utilisateur l'option de vote, mais quand ils votent, je veux un peu comment retourner une valeur de vote.php pour dire qu'ils ont déjà voté.

Des idées pour la meilleure approche à ce sujet?

Répondre

2

Utilisez JSON

Si ceci est votre fichier pour afficher le formulaire de vote:

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

Votre code JS ressembler à ceci:

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

votre vote.php devrait être quelque chose comme:

// 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 



Pour plus de détails sur ce look à this question.