Ajax i jQuery fungerer sådan her:
var myData=1;
$.ajax({
type:'POST',//type of ajax
url:'mypage.php',//where the request is going
data:myData,//the variable you want to send
beforeSend:function(xhr){//as a standard, I add this to validate stuff
if(someThingWrong===true)xhr.abort//aborts xhttpRequest
},
success:function(result){
//result is your result from the xhttpRequest.
}
});
Dette vil ikke opdatere din side, men sende et 'POST' til den angivne url. På din angivne side vil du gøre, hvad det er, du vil gøre, og sige returnere et resultat. I mit eksempel vil jeg gøre noget simpelt:
if($_POST['myData']===1)return True;
Det er det grundlæggende i en AJAX-anmodning, der bruger jQuery.
REDIGERE!
initiering af et AJAX-script:Jeg gætter kun, da jeg ikke kender dine elementer i din html eller dine scripts! Så du bliver nødt til at foretage justeringer!
$('button.dislike').click(function(){
$.ajax({
type:'POST',
url:'disliked.php',
data:{dislike:$(this).attr('id')},
success:function(result){
$(this).prev('span').append(result);
}
});
});
PHP:brug ikke mysql, det er nu blevet afskrevet og betragtes som dårlig praksis, jeg ved heller ikke hvorfor jeg bruger sprintf på forespørgslen? :S
$DBH=new mysqli('location','username','password','database');
$get=$DBH->prepare("SELECT dislike FROM random WHERE ids=?");
$get->bind_param('i',$_POST['dislike']);
$get->execute();
$get->bind_result($count);
$get->close();
$update=$DBH->prepare('UPDATE random SET dislike=? WHERE ids=?');
$update->bind_param('ii',++$count,$_POST['dislike']);//if you get an error here, reverse the operator to $count++.
$update->execute();
$update->close();
return String $count++;
Dette vil kun fungere, hvis der i din HTML er en række knapper med ID'er, der matcher dem i din database. Så
$get=$DBH->prepare('SELECT ids FROM random');
$get->execute();
$get->bind_result($ids);
while($get->fetch()){
echo"<button class='dislike' id='".$ids."'>Dislike this?</button>";
}
Håber du får den generelle idé om, hvordan jeg administrerer dit dislike-knapsystem XD lol