JQuery ajax erreur aléatoire dans Chrome seulement

Résumé du problème

après s'être connecté avec Chrome via Forms Authentication. La page d'accueil en tant que returl fera une erreur dans mon ajax jQuery sans frapper le serveur. status code = 0 et message = "error". (Peu utile). Après avoir essayé Firefox et ne pas être en mesure de répliquer le problème, je commence à penser Chrome est le problème. Le nettoyage des caches, la fermeture et la réouverture ne sont pas corrects. L'article le plus proche que je puisse trouver est celui-ci. Jquery Ajax-code de statut 0? Cependant, L'URL est relative,/Test

une Autre SORTE d'article: jquery ajax problème dans chrome

description plus longue

je reçois une erreur avec jQuery ajax. Il semble qu'immédiatement après s'être connecté avec forms authentication, la page de destination (returl), va faire une erreur JS. Puis, après avoir rafraîchi la page (F5), le script fonctionnera (la plupart du temps). Même si vous n'utilisez pas F5, naviguer sur la même page en utilisant un link permettra au JS de fonctionner (principalement). Donc tout de suite après login est mon chemin de test principal.

aussi, naviguer dans un autre onglet à /Test action directe, fonctionne. L'onglet d'origine encore des erreurs jusqu'à ce que je naviguer ou de l'actualiser comme mentionné.

j'ai eu des moments où la navigation ou f5 actualiser n'arrête pas l'erreur. Ainsi, l'utilisation de "la plupart" dans le paragraphe d'ouverture.

après une journée et un peu de ne pas être en mesure de trouver une raison solide à travers la recherche, Js debugger, simplification du code et divers scénarios; j'ai besoin d'aide.

Javascript erreur feedback

Le plus que je peux rassembler est un status code of 0 et error message of "error".

logiciels et versions

ASP.NET MVC 3
Chrome v28.0.1500.72 m
jQuery v1.8.3
AttributeRouting

avec Chrome, j'ai aussi essayé de vider le cache et CTRL+F5.

MVC

J'ai une action protégée par un [Authorize(Roles = "Admin")] désactivation de ceci attribut ne semble résoudre mon problème et puis plus tard, pas. Donc, désolé si des déclarations précédentes confondues. lol, court sur les cheveux!

[GET("Test")]
public ActionResult Test()
{
    Console.WriteLine("Test");
    return new EmptyResult();
}

aucun fichier javascript ne se trouve derrière un dossier protégé par l'authentification forms.

jQuery doc.prêt

j'ai un événement d'erreur jQuery que j'ai utilisé pour mettre en pause le débogage pour voir le contenu des objets.

//-- while I am using this method, I have also used the `error: ` 
//-- part of $.ajax with the same result.
    $(function ()
    {
        $(document).ajaxError(function (event, jqxhr, settings, exception)
        {
            Debug.Log("event: " + event);
            Debug.Log("jqxhr: " + jqxhr.responseText);
            Debug.Log("settings: " + settings);
            Debug.Log("exception: " + exception);
        });
    });

j'ai une méthode jQuery qui charge en utilisant les évènements suivants. Alors que le script de suivig ressemble à ce qu'il claquerait le serveur. Il y a une logique de synchronisation pour s'assurer qu'il ne frappe que toutes les 5 secondes.

$(document).on('mousemove','*',function(e){ TestMethod(this,e,'mousemove');});

méthode Javascript

C'est mon appel ajax qui est aussi simple que je peux le faire.

   function TestMethod(sender, e, eventTrgger)
    {
        $.ajax(
        {
            type: "GET",
            url: '/Test',
            dataType: 'html',
            success: function (html)
            {
                //-- tested with nothing here.
            }
        });
    }

Fiddler

lorsque l'erreur se produit, Fiddler n'affiche pas de requête GET, ce qui signifie que le serveur n'est pas activé. En outre, je place un point de rupture de débogueur dans l'action confirme que l'action n'est pas touchée.

Autre: Depuis l'appel ajax se produit toutes les 5 secondes. Pendant que je suis sur la page et que je vois status-0 et error-"error", je vide le cache et sans rafraîchir la page, chrome et la requête ajax commencent à fonctionner. Pour rappel, mes seetings de cache chrome sont définis à aussi peu de cache que je suis autorisé à configurer.

9
demandé sur Community 2013-07-22 04:55:00

1 réponses

le problème semble être un bug avec la façon dont Chrome 28 gère la mise en cache des requêtes GET. La Version 27 Fonctionne bien, tout comme les requêtes POST dans la version 28.

vous pouvez contourner le problème en paramétrant la propriété 'cache' à false dans votre $.ajax() de l'appel.

8
répondu Rob 2013-07-22 13:50:32