2009-12-10 3 views
3

Sur un site Web que je construis, lorsque vous vous connectez (parce que la base de données est sur un autre serveur), J'utilise json remplissage pour vérifier si l'utilisateur comme les bonnes informations d'identification.JsonP fonctionne avec Opera, Chrome & Safari?

Il fonctionne parfaitement (IE7, IE8 & FF), jusqu'à ce que je l'ai essayé sur chrome, safari & opéra où il est un désastre complet.

$.ajax({ 
    type: "GET", 
    dataType: "jsonp", 
    url: "http://someurl.com", 
    data: aRequestData, 
    cache: false, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
    // typically only one of textStatus or errorThrown 
    // will have info 
    alert("Error occured textStatus=" + textStatus + " errorThrown=" + errorThrown); 
    }, 
    success: function(data) { 
    alert('success');  
    } 
}); 

Plaine et simple et cela fonctionne dans la fenêtre du navigateur, mais, à ma grande surprise, il ne fonctionne pas en chrome, safari & opéra, n'a jamais eu à l'alerte de succès.

Est-ce que quelqu'un sait comment résoudre ce problème?

Merci.

+0

C'est une très bonne question. + 1 pour contrer –

+0

@Justin, merci mon pote. – Tom

Répondre

0

Le problème a été laissé sur la tête de page html, dans un "Thickbox" (plugin jQuery Thickbox) où l'appel ajax a été fait!

Firefox ou IE ne dérange pas les en-têtes répétés dans ce cas, mais le moteur WebKit fait!

Je devais juste enlever les en-têtes supplémentaires, et tout était de retour sur les pistes.

Merci à tous!

1

Avez-vous essayé d'utiliser les outils de développement intégrés pour Safari et Chrome pour vérifier si vous obtenez une réponse avec le code d'état HTTP 200 à partir de votre demande?

Dans Chrome, vous pouvez accéder à ces outils à partir du menu 'Affichage', choisissez l'onglet 'Ressources' pour voir toutes les demandes effectuées. Je pense que vous devrez activer ces outils dans certains paramètres lors de l'utilisation de Safari. alt text

Vous pouvez également essayer de créer la version sans jQuery pour exclure les erreurs commises là-bas, si vous ne recevez pas le statut 200 de vos appels, je pense que jQuery échouera sans faire appel à toutes les fonctions d'erreur, la documentation pour l'utilisation JSONP avec jQuery n'est pas très concis en ce qui concerne la gestion des erreurs.

Créez un fichier HTML avec une version modifiée du contenu suivant et le charger dans votre navigateur:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title /> 
     <script type="text/javascript"> 
     function ws_results(obj) { 
      alert(obj); 
     } 
     </script> 
     <script type="text/javascript" src="http://someurl.com?foo=bar&amp;callback=ws_results" /> 
    </head> 
    <body /> 
</html> 
+0

merci, j'ai effectivement trouvé une solution à celui-là et j'ai oublié d'écrire la réponse. – Tom

Questions connexes