2010-07-20 6 views
0

Le responseText est vide dans Firefox, mais ok dans Internet Explorer. Je consigne également la réponse avant de retourner au client pour que je puisse y voir ma réponse.prototype ajax statusText est vide sur Internet Explorer

Ceci est ma demande, j'ai ajouté un setTimeout mais cela n'aide pas non plus.

var ajaxUrl = "./ajaxHandlers/ajax-handler.php"; 

var myAjax = new Ajax.Request(
    ajaxUrl, 
    { 
    method: 'post', 
    parameters: params, 
    onComplete: function(response) 
    { 
     setTimeout(handleResponse(response,callback) ,5000); 
    } 
}); 



function handleResponse(response,callback) 
{ 
    alert(response.responseText); 

    try 
    { 
    eval("var r = " + response.responseText); 
    } 
    catch (e) 
    { 
    alert("EXCEPTION = " + e.constructor); 

    showError("error evaluating response : Response text:<br/>" + response.responseText); 
    var r = new Object(); 
    r.message = 'Error evaluating response'; 
    r.status = 'error'; 
    if (typeof callback == 'function') callback(r); 
    return; 
    } 
} 
+0

envoi de la demande comme asynchrone: false, fonctionne comment ça se fait? – shay

Répondre

1

Dans la onComplete votre variable de rappel n'est pas définie de sorte ce qui provoque votre problème:

onComplete: function(response) 
{ 
     handleResponse(response); 
} 

ou

onComplete: function(response, callback) 
{ 
     handleResponse(response, callback); 
} 

Edit: Voici le code complet je. Ca marche absolument bien sur FF 3.5.10 .. hmm pas la dernière mais ça devrait être pareil. Je peux confirmer la ajax est synchrone à cause de l'ordre des instructions de sortie console.info:

var ajaxUrl = "./ajaxHandlers/ajax-handler.php"; 
console.info('1'); 

var myAjax = new Ajax.Request(
    ajaxUrl, 
    { 
    method: 'post', 
    asynchronous: false, 
    parameters: {}, 
    onComplete: function(response, callback) 
    { 
     handleResponse(response,callback); 
    } 
    } 
); 

console.info('2'); 

function handleResponse(response, callback) 
{ 
console.info(response.responseText); 

    try 
    { 
    eval("var r = " + response.responseText); 
    } 
    catch (e) 
    { 
    alert("EXCEPTION = " + e.constructor); 

    showError("error evaluating response : Response text:<br/>" + response.responseText); 
    var r = new Object(); 
    r.message = 'Error evaluating response'; 
    r.status = 'error'; 
    if (typeof callback == 'function') callback(r); 
    return; 
    } 
} 
+0

merci mais toujours sur les messages synchronisés je reçois le même – shay

+0

aussi pas ma page est rechargement après la demande ajax asynchrone est fait – shay

+0

je ne peux pas comprendre ce que vous essayez de faire ... nous fournir plus de code ou expliquer mieux –

Questions connexes