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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

Merci d'avance.