2010-11-20 6 views
0

Je veux utiliser .ajax $ pour lire une infomation de fichier xml, voici mon code js:

 $.ajax({ 
      type: "get", 
      url: "Database/App_all.xml", 
      dataType: "xml", 
      timeout: 2000, 
      beforeSend: function() { 

      }, 
      success: function (xml) { 
       $(xml).find("app[id='id-1']").appendTo($("#contain")); 
      }, 
      error: function() { 
       alert("ajax failed!"); 
      } 
     }); 

Cependant, le seul code de travail super dans Firefox et l'opéra.

Il ne fonctionne pas en chrome (7.0.517.24) et safari (5.0.1), échoué sans aucune alerte, même pas l'alerte ("ajax failed").

Y at-il un bug dans $ .ajax dans chrome et safari? Alors, comment résoudre le problème?

merci beaucoup :)

+2

Je vous assure que j'utilisais .ajax $ avec Chrome il y a seulement cinq heures au bureau, et n'avait pas ce genre de problème. J'imagine aussi qu'ils l'utilisent ici sur SO et je n'ai aucun problème ici. Je n'ai aucun problème sur jQueryUI dans Chrome. Je pense que c'est ton code. – jcolebrand

Répondre

1

Tout d'abord je vous remercie gajendra.bang et Māris Kiseļovs me donner vos conseils, je konw ce qui ne va pas avec mon code, après que je reçois un mauvais avant-corps, j'essayer savoir ce que le $ .ajax obtenir de xml exactement, donc j'utiliser Firebug vérifier la div # contiennent que je trouve:

 <div id="contain"> 
     <auther>cocept</auther> 
 </div> 

oui, je pense que le <auther></auther> doit le problème, je ne konw même pas le .ajax de $ obtiendrait le tagname et donc je réécrire:

success: function (xml) { 
     $("#contain").html($(xml).find("app[id='id-1']").find("auther").text()); 
} 

alors la div $ contient est:

 <div id="contain"> 
     cocept 
 </div> 

donc, le chrome et safari pourraient montrer à nouveau!

+0

Merci, mais quelqu'un a voté mon commentaire :( –

4

Vous devez utiliser les outils de chrome ou développeur intégré dans Safari (Ctrl + Maj + i) pour le suivi des erreurs JS et le suivi des demandes AJAX réelles.

Votre code est-il encapsulé dans document.ready? Y at-il des erreurs dans la console javascript? Essayez également de sortir quelque chose après la ligne de rappel réussie.

Une autre cause à cela pourrait être un type mime incorrect pour votre fichier XML renvoyé par le serveur. Cela devrait être [Content-type: text/xml]. Vous pouvez vérifier cela dans les outils de développement intégrés de chrome ou de safari - il suffit de rechercher l'en-tête des en-têtes lorsque la ressource xml est sélectionnée. Si c'est le problème réel, vous devrez peut-être modifier la configuration du serveur Web (configuration principale ou .htaccess pour apache) pour renvoyer le type mime correct.

-1
$(xml).find("app[id='id-1']").appendTo($("#contain")); 

ce qui est essentiellement xml retour, un élément avec « # » comme « #mydiv » ou classe comme « .mydiv »

Je pense que vous essayez d'accéder à un élément et si vous ne retournez pas avec « # », essayez

$("#"+xml).find("app[id='id-1']").appendTo($("#contain")); 
+1

Non, ce n'est pas ce qu'il fait. La variable xml var est du code XML, et en le passant dans jQuery, jQuery l'analyse. Bien que je fais souvent l'erreur de laisser tomber le hachage, alors bonne suggestion. –

0

Je suppose que vous avez un problème avec la lecture du fichier local par ajax. Ajax peut être utilisé pour lire un fichier du même serveur web, mais il y a des restrictions de sécurité si vous ne le lisez pas par HTTP.

Dans firefox et opera, vous pouvez lire les fichiers locaux (avec le fichier url like: /// C: /Program%20Files/My/Database/App_all.xml) par ajax sans aucun problème.

Dans Internet Explorer, vous devez utiliser dataType: 'text', puis convertir le texte en XML (en savoir plus here).

Pour pouvoir lire des fichiers locaux dans Chrome, vous devez redémarrer le chrome avec un autre paramètres:

chrome.exe --allow-file-access-from-files 

(Assurez-vous que toutes les autres instances de chorme fermées avant de commencer chrome.exe de la manière).

+0

Merci beaucoup – hh54188

0

Ceci est un problème pour les fichiers locaux ... Vous devriez essayer de les télécharger sur un serveur web et vérifier à partir de là

+0

Y at-il une raison que vous pensez que javascript se comportera différemment sur le serveur local et distant? – Apurv

Questions connexes