Ich möchte Up/down-Abstimmungssystem für mehrere Artikel aus der Datenbank abgerufen werden, aber ich möchte Cookie für jeden Artikel hinzufügen, um die Anzahl der Stimmen zu begrenzen, so Cookie an einem Tag abläuft, aber Ich weiß nicht, wo ich den passenden Code hinzufügen soll.Verwendung von Cookies in up/down Abstimmungssystem
weitere Details: jedes Mal wenn Benutzer klicken Sie auf den Pfeil nach oben und umgekehrt verringern
<script>
function vote(id, value) { // function vote with 2 arguments: article ID and value (+1 or -1) depending if you clicked on the arrow up or down
var dataFields = { 'id': id, 'value': value }; // We pass the 2 arguments
$.ajax({ // Ajax
type: "POST",
dataType: "text",//This for indicate that you'r expecting a text response from server
url: "WebService.asmx/updateVotes",
data: dataFields,
timeout: 3000,
success: function (dataBack) {
if(
$('#number' + id).html(dataBack);// div "number" with the new number
$('#arrow_up' + id).html('<div class="arrow_up_voted"></div>'); // We replace the clickable "arrow up" by the not clickable one
$('#arrow_down' + id).html('<div class="arrow_down_voted"></div>'); // We replace the clickable "arrow down" by the not clickable one
$('#message' + id).html('<div id="alertFadeOut' + id + '" style="color: green">Thank you for voting</div>'); // Diplay message with a fadeout
$('#alertFadeOut' + id).fadeOut(1100, function() {
$('#alertFadeOut' + id).text('');
});
},
error: function() {
$('#number' + id).text('Problem!');
}
});
}
</script>
der obige Code ist ein Skript Aufruf Ajax-Methode Zahl der Stimmen pro zu erhöhen.
public string updateVotes(string id,int value)
{
System.Threading.Thread.Sleep(500); // delay for 2.5 seconds Network latency
post p = db.posts.Find(int.Parse(id));
// assign new values
p.totalVotes += value;
db.Entry(p).State = System.Data.EntityState.Modified;
db.SaveChanges();
string dataBack =p.totalVotes.ToString();
return dataBack;
}
Dies ist die Webmethode.
Jetzt habe ich versucht, laut zu denken, und ich code die folgende Funktion zu ewxamine, wenn der Cookie null ist oder nicht.
public bool enableVoting()
{
HttpCookie cookie = Request.Cookies["enableVote"];
if (Request.Cookies["enableVote"] != null)
{
return true;
}
else
{
return false;
}
}
ich weiß, es ist falsch, aber zumindest habe ich es versucht.
auch wo eine für jede Schleife hinzuzufügen, um ein Cookie hinzuzufügen, wenn Benutzer für Artikel abstimmen.?
foreach(post p in db.posts){
HttpCookie cookie = new HttpCookie("enableVote"+p.ID);
cookie.Value = "article:"+p.ID;
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
}
Vielen Dank für den Rat, haben Sie ein Beispiel oder einen Link, um den Weg zu erklären, die IP des Wählers zu bekommen? –
Mit Asp.net C# kann ich das tun? –