2011-03-09 4 views
2

J'appelle un webmethod de jquery/ajax. Parfois, ma méthode web est appelée, d'autres fois non. Je passe les mêmes arguments à chaque fois (le chiffre 1 et une courte chaîne de texte). J'ai également créé des gestionnaires pour détecter les erreurs et afficher les codes lorsque l'appel ajax est terminé. Même quand il n'appelle pas ma méthode web, le statut est "succès". Des idées?ajax ne pas déclencher webmethod parfois

Le jquery:

var txt = $(ta).val(); 

$.ajax({ 
    type: 'POST', 
    url: 'Default.aspx/AddThread', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify({ forumId: id, comment: txt }), 
    dataType: 'json', 
    error: function(jqXHR, textStatus, errorThrown) { 
     alert("status: " + textStatus); 
     alert("errorThrown: " + errorThrown); 
    }, 
    complete: function (jqXHR, textStatus) { 
     alert("status: " + textStatus); 
    } 
}); 

Le C#:

[WebMethod] 
public static void AddThread(int forumId, string comment) 
{ 
    DataAccess.AddNewThread(forumId, comment); 
} 
+0

Il semble effectivement fonctionner de manière cohérente dans IE. J'ai le comportement intermittent dans Chrome. – birdus

Répondre

1

je suppose qu'il est juste ne fonctionne pas dans IE. Si tel est le cas, voir this answer.

1

Si vos paramètres sont les mêmes comme précédent l'appeler invoquer l'habitude le code

//i.e. 
    AddThread(42, "Hello World"); 

    //then later you also call 
    AddThread(42, "Hello World"); 

    //the web method wont invoke any code it will just return the cached result.` 

pour arrêter ce comportement, vous pouvez définir CacheDuration à 0 pour qu'il ne sauve plus le résultat

[WebMethod(CacheDuration=0)] 
public static void AddThread(int forumId, string comment) 
{ 
    DataAccess.AddNewThread(forumId, comment); 

} 
+0

Cela ne devrait pas être un problème car les requêtes sont des POST et il ne se soucie pas de la réponse (vide). –

+1

Malheureusement, cela n'a pas fait l'affaire. Même le premier appel que j'ai fait en exécutant l'application Web ce matin n'a pas atteint mon point de rupture! Les deuxième et troisième appels ont fait, et le quatrième appel n'a pas. – birdus

+0

Êtes-vous capable de trouver vos appels ajax en utilisant l'onglet "Network" de "Developer Tools" en chrome (voir la [capture d'écran] (http://i1-news.softpedia-static.com/images/news2/The-Google -Chrome-Developer-Outils-Améliore-Network-Info-et-CSS-Editing-2.png))? Êtes-vous en train de publier des articles mais vous ne recevez aucune réponse? Le client et le service s'exécutent-ils localement sur votre machine? – Evan

Questions connexes