2012-09-19 1 views
0

Je fais une requête via jQuery ajax à un gestionnaire générique .NET (.ashx).La requête jQuery ajax ne fonctionne que de façon synchrone, ne retourne pas en mode asynchrone.

Je renvoie JSON, que j'ai validé sur JSONLint, mais que je ne peux pas publier car ce sont des données sensibles.

Le problème est que l'appel ne retourne que lorsqu'il est fait de manière synchrone (async:false). Lorsqu'il est fait de manière asynchrone, il ne revient jamais. async:false appellera ma fonction de succès ainsi que toutes les fonctions globales. async:true n'appellera que les fonctions globales ajaxStart et ajaxSend, async:false les appellera ainsi que les autres.

Je ne sais pas très bien comment poursuivre le débogage ou déterminer pourquoi il n'y a pas de réponse.

$.ajax({ 
    type: "POST", 
    async: false, 
    cache: false, 
    timout: 600000, 
    data: request_object.GetQueryString(), 
    dataType: "json", 
    responseType: "json", 
    error: function (request, error_type, error_message) { 
     alert("error"); 
    }, 
    success: function (data, status, request) { 
     alert("success"); 
    }, 
    url: "./ReportRequestHandler.ashx", 
    complete: function() { 
     alert("here"); 
    } 
}); 

$(document).ajaxError(function() { 
    alert("ajaxError"); 
}).ajaxSend(function() { 
    alert("ajaxSend"); 
}).ajaxStart(function() { 
    alert("ajaxStart"); 
}).ajaxStop(function() { 
    alert("ajaxStop"); 
}).ajaxSuccess(function() { 
    alert("ajaxSuccess"); 
}).ajaxComplete(function() { 
    alert("ajaxComplete"); 
}); 
+0

erreur d'orthographe dans timeout .. aussi. vérifier dans le panneau net de firebug ou dans la console de chrome pour xhr demande afin que vous puissiez savoir quel est le problème –

Répondre

0

Je pense que c'est à cause du "." dans l'URL. Avez-vous essayé de supprimer cela? Vérifiez cela aussi qu'ils a quelque chose de similaire

jQuery not getting reply when using asynchronous

Hope it helps

+0

Le bouton que j'utilisais était en soumettant la page pendant la demande en asynchrone et bien sûr la synchronisation le tenait en place assez longtemps pour répondre. La page était si courte qu'elle était chargée de jeûner pour voir le blip. –

0

J'ai couru le code dans une page avec les configurations sans attribut async et il semble fonctionner très bien pour moi ..

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Pages" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 

    <title></title> 

    <script type="text/javascript"> 
     $(document).ajaxError(function() { 
      alert("ajaxError"); 
     }).ajaxSend(function() { 
      alert("ajaxSend"); 
     }).ajaxStart(function() { 
      alert("ajaxStart"); 
     }).ajaxStop(function() { 
      alert("ajaxStop"); 
     }).ajaxSuccess(function() { 
      alert("ajaxSuccess"); 
     }).ajaxComplete(function() { 
      alert("ajaxComplete"); 
     }); 
     $.ajax({ 
      type: "POST", 
      timout: 600000, 
      data: { 'type': 'check' }, 
      dataType: "json", 
      responseType: "json", 
      error: function(request, error_type, error_message) { 
       alert("error"); 
      }, 
      success: function(data, status, request) { 
       alert("success"); 
      }, 
      url: "../../Ajax/GenericData.ashx", 
      complete: function() { 
       alert("here"); 
      } 
     }); 

    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 

Je suis tous les messages d'alerte afin .. Pouvez-vous vérifier la section de la console du navigateur et voir ce qui se passe exactement avec vous demande quand async: false est supprimé de votre configuration ..

+0

Placez un point de débogage dans le fichier .ashx et vérifiez si le point est atteint au démarrage de la requête pour les deux types. –

0

J'ai trouvé le problème. Le bouton utilisé pour déclencher l'événement envoyait la page et rechargeait trop vite pour que je puisse voir un clignotement.

Questions connexes