Ja mam to zrobione w ten sposób:
var request = new XMLHttpRequest();
request.open("POST", "/votes", true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send("action="+actionButton.id+"&artId="+artId);
request.onreadystatechange = function () {
if (request.readyState === 4) {
if (request.status === 200) {
if(request.responseText=='LOGOUT'){
artIdNode.lastElementChild.innerHTML='Aby oddać głos musisz być zalogowany';
}else if(request.responseText=='VOTED'){
artIdNode.lastElementChild.innerHTML='Już oddałeś głos na ten artykuł';
}else {
actionButton.getElementsByTagName('span')[0].innerHTML = request.responseText;
artIdNode.lastElementChild.innerHTML='Dziękujemy';
}
}
}
};
I PHP.
$type = $_POST['action'];
$artId = $_POST['artId'];
$vote = new Votes();
$userId = $this->User->getID();
if($vote->checkVote($artId,$userId)!=0){
echo 'VOTED';
return false;
}
switch($type) {
case 'yes':
$ask =$vote->addVote('yes',$artId,$userId);
echo $ask['yes'];
break;
case 'no':
$ask =$vote->addVote('yes',$artId,$userId);
echo $ask['no'];
break;
default:
break;
}
Nie wiem czy tak jest w 100% poprawnie, ale działa. Nie jestem pewien czy wartości zmiennych powinno się zwracać jako echo.