48 votes

Problèmes liés à jQuery getJSON lors de l'utilisation de fichiers locaux dans Chrome

J'ai un très simple page de test qui utilise des demandes XHR avec jQuery $.getJSON et $.méthodes ajax. La même page fonctionne dans certaines situations et pas dans d'autres. Specificially, il ne fonctionne pas dans Chrome sur Ubuntu.

Je suis en essais sur Ubuntu 9.10 avec Chrome 5.0.342.7 bêta et Mac OS x 10.6.2 avec Chrome 5.0.307.9 bêta.

  • Il fonctionne correctement lorsque les fichiers sont installés sur un serveur web à partir à la fois Ubuntu/Chrome et Mac/Chrome (essayer ici).
  • Il fonctionne correctement lorsque les fichiers sont installés sur le disque dur local dans Mac/Chrome (consulté le avec file:///...).
  • Il ÉCHOUE lorsque les fichiers sont installés sur le disque dur local dans Ubuntu/Chrome (accès par file:///...).

Le petit ensemble de 3 fichiers peuvent être téléchargés dans un tar/gzip fichier à partir d'ici: http://issues.tauren.com/testjson/testjson.tgz

Quand il fonctionne, le Chrome console va dire:

XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:16Using getJSON
index.html:21
Object
result: "success"
__proto__: Object
index.html:22success
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:29Using ajax with json dataType
index.html:34
Object
result: "success"
__proto__: Object
index.html:35success
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:46Using ajax with text dataType
index.html:51{"result":"success"}
index.html:52undefined

Quand ça ne fonctionne pas, le Chrome console affiche ceci:

index.html:16Using getJSON
index.html:21null
index.html:22Uncaught TypeError: Cannot read property 'result' of null
index.html:29Using ajax with json dataType
index.html:34null
index.html:35Uncaught TypeError: Cannot read property 'result' of null
index.html:46Using ajax with text dataType
index.html:51
index.html:52undefined

Notez qu'il ne s'affiche même pas les demandes XHR, bien que le gestionnaire de succès est exécuté. Je vous jure, c'était déjà dans Ubuntu/Chrome, et je suis inquiet de quelque chose s'est foiré. J'ai déjà désinstallé et réinstallé Chrome, mais cela n'a pas aidé.

Quelqu'un peut-il essayer en local sur votre système Ubuntu et dites-moi si vous avez des ennuis? Notez qu'il semble fonctionner correctement dans Firefox.

38voto

Une autre façon de le faire est de démarrer un serveur HTTP local sur votre annuaire. Sur Ubuntu et MacOs avec Python installé, c'est un one-liner.

Accédez au répertoire contenant vos fichiers Web et:

 python -m SimpleHTTPServer
 

Puis connectez-vous à http: // localhost: 8000 / index.html avec n’importe quel navigateur Web pour tester votre page.

30voto

Daniel Furrer Points 434

Il s'agit d'un problème connu avec Chrome.

Voici le lien dans le traqueur de bugs:

Problème 40787: Les fichiers locaux ne se chargent pas avec Ajax

13voto

Thomas Points 171

Sous Windows, Google Chrome peut être installé dans votre dossier AppData: "C: \ Utilisateurs \\ AppData \ Local \ Google \ Chrome \ Application"

Avant d'exécuter la commande, assurez-vous que toute votre fenêtre de Chrome est fermée et ne s'exécute pas. Ou bien, le paramètre de ligne de commande ne serait pas efficace. "chrome.exe --allow-file-access-from-files"

3voto

Zdeněk Mlčoch Points 137

Vous pouvez placer votre fichier json en js et l'enregistrer dans une variable globale. Ce n'est pas asynchrone, mais cela peut aider.

1voto

Shazron Points 2148

@ Mike Sur Mac, tapez ceci dans Terminal:

 open -b com.google.chrome --args --disable-web-security
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X