2010-09-04 20 views
5

Im usando Ajax per inviare i valori ad uno script PHP che scrive un certo valore a un database:Ajax valore postale di ritorno

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

Come si può probabilmente dire dal action=vote_down la sceneggiatura è per uno script di voto.

Im già impedendo all'utente di votare più di una registrazione effettuando il voto lì contro username e ID in vote.php e se il nome utente e l'ID sono già presenti nel DB rispetto allo stesso post, non aggiungo il voto al DB.

Personalmente ritengo che interrogare il database su ogni pagina caricata per verificare se l'utente ha già votato potrebbe essere piuttosto intenso, ci sono molti posti in cui votare su una singola pagina.

Quindi, invece, mostrerò all'utente l'opzione di voto, ma quando votano voglio un po 'come restituire un valore da vote.php per dire che hanno già votato.

Qualche idea per l'approccio migliore a questo?

risposta

2

Usa JSON

Se questo è il file di mostrare la scheda di voto:

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

Il codice JS simile a questa:

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

tua vote.php dovrebbe essere qualcosa di simile:

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



Per ulteriori dettagli su questo aspetto su this question.

Problemi correlati