Ajax-problemer, responseText er tom.
Jeg er i gang med et mindre ajax-projekt, hvor jeg vil lave en web-frontend til mpc.
Desværre kan jeg ikke få mit xmlhttprequest til at give nogen responseText.
Mit php-script til at styre mpx ser således ud:
<?php
$arg=$_GET["arg"];
$playerState=0;
$shuffle=0;
$repeat=0;
$output=array();
switch ($arg) {
case 0:
exec("mpc",$output);
break;
case 1:
exec("mpc toggle",$output);
break;
case 2:
exec("mpc stop",$output);
break;
case 3:
exec("mpc prev",$output);
break;
case 4:
exec("mpc next",$output);
break;
case 5:
exec("mpc random",$output);
break;
case 6:
//der kommer noget her
break;
}
if (substr($output[1],0,1)=="[") {
if (substr($output[1],0,9)=="[playing]") {
$playerState=1;
} elseif (substr($output[1],0,8)=="[paused]") {
$playerState=2;
}
//henter shuffle-information
$shuffle=strpos($output[2],"random");
$shuffle=substr($output[2],$shuffle+8,2);
if ($shuffle=="of") {
$shuffle=0;
} else {
$shuffle=1;
}
} else {
$playerState=3;
//henter shuffle-information
$shuffle=strpos($output[0],"random");
$shuffle=substr($output[0],$shuffle+8,2);
if ($shuffle=="of") {
$shuffle=0;
} else {
$shuffle=1;
}
}
echo $playerState . "," . $shuffle . "," . "0";
?>
Hvis jeg tjekker scriptet direkte i en browser fungerer det perfekt og browseren skriver præcis den tekst jeg skal bruge.
Det javascript der laver xmlhttprequest'en ser således ud:
var playbackReq;
function playback(arg) {
playbackReq=new XMLHttpRequest();
playbackReq.onload=playbackResponse();
playbackReq.open("GET","php/playbackControl.php?arg="+arg,true);
playbackReq.send(null);
}
function playbackResponse() {
alert(playbackReq.responseText);
}
"playback"-funktionen virker præcist som den skal, men af en eller anden grund får jeg kun en "alert" uden tekstindhold tilbage, i stedet for den tekst som bliver skrevet af mit php-script.
Jeg har prøvet at bruge "onreadystatechange" i stedet for "onload", og så at tjekke readystate'et i playbackResponce, men readystate'et ændrer sig ikke fra 0. Det sker selvom at både FF og chrome fortæller at mit xmlhttprequest er fuldført.
Nogen herinde der kan hjælpe mig videre?
- Log in to post comments
Kommentarer1
Jeg fandt selv fejlen
En halv times ekstra gennemgang af koden gav resultater.
Det var i
playbackReq.onload=playbackResponse();
at "playbackResponse" ikke skulle afsluttes med parentesklammer.