JQuery/JSONP/PHP fontionne sur Firefox, mais pas sur Chrome et Opera
Bonjour à tous,
Je suis en actuellement sur un projet utilisant PHP et JQuery et je dois utiliser dans ce projet des requêtes cross-domain, donc j'utilise JSONP.
Mes requêtes AJAX fonctionnent toutes sous Firefox, mais pas sous Chrome et Opera.
J'ai une première fonction qui va exécuter la requête :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
function update()
{
$.ajax({
url : url,
type : "GET",
dataType: "jsonp",
crossDomain : true,
jsonpCallback : "updateCallback",
async : false,
data : {'session_id' : sessionID,'user' : userName },
error : function (xhr, status, error) {
alert("Erreur de chargement du fichier '"+url+"' : "+xhr.responseText+" ("+status+" - "+error+")");
},
success: function(){
alert("Success !");
}
});
} |
Le code de la fonction de callback :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
function updateCallback(data)
{
var i = 0;
var messages = data.messages;
while(i < data.messages.length){
appendMessage(data.messages[i]);
i++;
}
saveLastMsgID = lastMsgID;
doUpdate = updateInProgress = false;
} |
Le script php qui est appelé (je l'ai simplifié au max pour que ce soit plus clair, le reste n'étant pas en rapport direct avec la requête) :
Code:
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 26 27
|
<?php
/* ... */
function sendResponse($messages,$date)
{
header('content-type: application/json; charset=utf-8');
header("Access-control-allow-origin: *");
header ("Access-Control-Allow-Headers: x-requested-with", true);
header('Access-Control-Allow-Methods: GET,OPTIONS');
$datas = array();
for($i = 0 ; $i < count($messages) ; $i++){
$msg = $messages[$i];
$message = null;
$message->sender = $msg->getSender();
$message->date = $date;
$message->msg = stripslashes($msg->getContent());
$message->carrier = $carrier;
$datas[] = $message;
}
$data->messages = $datas;
echo $_GET['callback']. '('. json_encode($data) . ')';
}
?> |
Apparemment, Chrome effectue bien la requête, mais je ne reçoit pas la réponse. Donc, je pense que ce serait le JSONP qui serait mal formaté ou qu'une option dans ma requête AJAX est incorrecte.
Je sèche depuis un bon moment là-dessus, donc si vous avez une idée n'hésitez pas, je suis tout ouïe :mouarf:
Merci d'avance.