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:
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:
"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?
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?
Kommentarer1
Jeg fandt selv fejlen
Det var i
playbackReq.onload=playbackResponse();
at "playbackResponse" ikke skulle afsluttes med parentesklammer.