Voici à quoi ressemble mon code pour le moment :
ma fonction de mise à jour :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function update()
{
$.ajax({
url : url,
dataType: "jsonp",
data : {'code' : 'message/update',
'save_id' : saveLastMsgID,
'last_id' : lastMsgID,
'session_id' : sessionID,
'user' : userName
},
success: function(data){
var i = 0;
var messages = data.messages;
while(i < data.messages.length){
appendMessage(data.messages[i]);
i++;
}
saveLastMsgID = lastMsgID;
doUpdate = updateInProgress = false;
}
});
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
function sendResponse($messages,$date)
{
header('content-type: application/javascript; charset=utf-8');
$datas = array();
for($i = 0 ; $i < count($messages) ; $i++){
$msg = $messages[$i];
$message = null;
$message->sender = $msg->getSender();
$message->date;
$message->msg = stripslashes($msg->getContent());
$message->carrier = $carrier;
$datas[] = $message;
}
$data->messages = $datas;
echo $_GET['callback']. '('. json_encode($data) . ')';
} |
Si j'enlève le callback dans mon fichier php et que je garde le "datatype : jsonp" dans ma requête jquery, ça ne fonctionne sur aucun navigateur.
Si je garde le callback et que je garde le datatype, ça fonctionne sous firefox uniquement
Si j'enlève le datatype, j'arrive dans ma fonction success sous firefox et sous chrome, mais je n'arrive pas à traiter les données à cause des '('. Si je les retires le callback ne se fait pas car j'obtiens le code suivant :
jQuery172031897191379441114_1336985839635 {"messages":[{"sender":"Fred","date":"11:01","msg":"fsdfsdfsd","carrier":"\n"}]}
Donc pour bien faire il faudra que j'arrive à avoir mon callback sans les parenthèses car j'obtiens ce code ci : " mais je ne vois pas comment...
Partager