Désolé pour la reposter (Admins, s'il vous plaît supprimer l'autre!). depuis que vous avez été d'une grande aide, j'espérais que vous pourriez m'aider encore une fois en posant la question suivante: J'essaye actuellement de travailler avec AJAX en permettant à un managerclass en PHP de communiquer via un XmlHttpobject avec le javascript sur le client. Cependant, je peux envoyer quelque chose au client via JSON, mais je ne peux pas le lire sur le client. En fait j'obtiens l'erreur que le "temps" est un index indéfini dans la session. Alors je me demandais: qu'est-ce que je fais mal?Javascript/ajax/php question: envoi du serveur au client fonctionne, l'envoi du client au serveur échoue
Le javascriptcode Ajax:
<script type="text/javascript">
var sendReq = GetXmlHttpObject();
var receiveReq = GetXmlHttpObject();
var JSONIn = 0;
var JSONOut= 0;
//var mTimer;
//function to retreive xmlHTTp object for AJAX calls (correct)
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
//Gets the new info from the server
function getUpdate() {
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
receiveReq.open("GET", "index.php?json="+JSONIn+"&sid=$this->session", true);
receiveReq.onreadystatechange = updateState;
receiveReq.send(null);
}
}
//send a message to the server.
function sendUpdate(JSONstringsend) {
JSONOut=JSONstringsend;
if (sendReq.readyState == 4 || sendReq.readyState == 0) {
sendReq.open("POST", "index.php?json="+JSONstringsend+"&sid=$this->session", true);
sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
alert(JSONstringsend);
sendReq.onreadystatechange = updateCycle;
sendReq.send(JSONstringsend);
}
}
//When data has been send, update the page.
function updateCycle() {
getUpdate();
}
function updateState() {
if (receiveReq.readyState == 4) {
// JSONANSWER gets here (correct):
var JSONtext = sendReq.responseText;
// convert received string to JavaScript object (correct)
alert(JSONtext);
var JSONobject = JSON.parse(JSONtext);
// updates date from the JSONanswer (correct):
document.getElementById("dateview").innerHTML= JSONobject.date;
}
//mTimer = setTimeout('getUpdate();',2000); //Refresh our chat in 2 seconds
}
</script>
La fonction qui utilise en fait le code ajax:
//datepickerdata
$(document).ready(function(){
$("#datepicker").datepicker({
onSelect: function(dateText){
var JSONObject = {"date": dateText};
var JSONstring = JSON.stringify(JSONObject);
sendUpdate(JSONstring);
},
dateFormat: 'dd-mm-yy'
});
});
</script>
Et le code PHP:
private function handleReceivedJSon($json){
$this->jsonLocal=array();
$json=$_POST["json"];
$this->jsonDecoded= json_decode($json, true);
if(isset($this->jsonDecoded["date"])){
$_SESSION["date"]=$this->jsonDecoded["date"];
$this->useddate=$this->jsonDecoded;
}
if(isset($this->jsonDecoded["logout"])){
session_destroy();
exit("logout");
}
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: text/xml; charset=utf-8");
exit($json);
}