2009-02-27 7 views
4

J'ai une simple liste d'enregistrements dans un tableau HTML avec un lien de suppression pour chaque ligne. Le lien de suppression envoie une requête de publication AJAX vers une URL fixe qui ressemble à: "/delete/record/5"AJAX Les requêtes POST https utilisant jquery échouent dans Firefox

La requête AJAX est créée à l'aide de l'appel .ajax() de jquery avec un message POST lorsqu'il est exécuté sur un serveur utilisant https. Cet appel échoue dans Firefox 3 sur les architectures OSX/Windows. Il fonctionne sur tous les autres navigateurs que j'ai testés (OSX/Windows: Chrome, Safari, IE7.)

Les requêtes proviennent d'un site https et vont sur le même site https. Mais je pense que quelque part au cours du processus, la requête initiale commence comme http et il y a une tentative de redirection sur notre serveur pour l'envoyer de http-> https et Firefox rejette cette redirection comme un type de falsification.

Quelqu'un a-t-il déjà eu l'expérience de faire .ajax() des appels JQuery sur un site https avec Firefox? Je remarque quelque chose d'étrange où si la demande a des arguments "?var=xxx" dans l'URL, la demande semble fonctionner plus souvent alors si elle n'a pas ces variables.

Répondre

13

Sounds like you're getting an HTTP 411 error.. Cette erreur peut se produire si vous envoyez une demande POST sans data.

Pour corriger cela, ajoutez un objet vide ({}) à la propriété data à vos demandes:

$.ajax({ 
    url: url, 
    type: 'POST', 
    data: {}, // <- set empty data 
    success: function(data, textStatus) { 
     // do something 
    } 
}); 
+0

Merci pour l'aide! C'était exactement le problème! J'ai eu FF3 et nginx, en mettant dans un vide data {} résout le problème. Je n'ai pas besoin de l'ID dans les données {} pour la suppression car l'ID est déjà dans l'URL. Spot sur le conseil! Merci. – MikeN

+0

Vous êtes les bienvenus. – alex2k8

+0

Correction d'un problème lié à l'échec de Firefox 3.0.x lors d'un appel ajax. Merci. – ken

1

Cela semble improbable ... pas que je doute de vous. Mais je suggère de télécharger Wireshark et regarder votre trafic HTTP pour voir si vous ne pouvez pas isoler le problème. Vous pourrez comparer la requête envoyée par d'autres navigateurs à la demande envoyée par FF3 et voir quel type de réponse revient. Si c'est effectivement un problème avec jQuery ne fonctionne pas correctement dans FF3, vous pourriez être en mesure de modifier une partie du code pour fonctionner correctement.

1

Vous pouvez probablement installer l'extension Firefox Live Headers qui vous donnera accès à toutes les informations de vos demandes/réponses. De cette façon, vous serez attraper des différences.

0

Avez-vous des plugins ou des scripts GreaseMonkey installés sur votre Firefox?

Je n'ai jamais eu de problèmes avec les requêtes jQuery AJAX sur HTTPS. Je suggère de jeter un oeil à ce que Firebug se présente si vous ne l'avez pas déjà fait.

0

Je suis .post $ pour travailler dans FireFox en envoyant un objet vide comme paramètre « data » . Notez les parenthèses vides pour le paramètre 2:

$ .post (url, {}, function (réponse) {alert ('done');}, "json");