2010-11-20 16 views
0

funktioniert Ich benutze .ajax $ wollen einige Infomationen aus XML-Datei zu lesen, hier ist mein js Code:

 $.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!"); 
      } 
     }); 

jedoch der Code nur Arbeit Toll in Firefox und Oper.

Es funktioniert nicht in Chrome (7.0.517.24) und Safari (5.0.1), gescheitert ohne jede Warnung, nicht einmal die Warnung ("Ajax fehlgeschlagen").

Gibt es einen Fehler in $ .ajax in Chrom und Safari? So, wie das Problem zu lösen?

vielen Dank :)

+2

ich Ihnen versichern, ich war im Büro vor $ Schnipsel mit Chrome nur fünf Stunden mit und hatte kein solches Problem. Ich kann mir auch vorstellen, dass sie es hier auf SO verwenden und ich habe hier keine Probleme. Ich habe keine Probleme mit jQueryUI in Chrome. Ich denke, es ist dein Code. – jcolebrand

Antwort

1

Zuerst danke gajendra.bang und Māris Kiseļovs gib mir deine Ratschläge, ich habe konw was mit meinem Code falsch ist, nachdem ich eine schlechte resault, ich versuche, zu wissen, was $ Schnipsel von xml erhalten genau, so dass ich Firebug die div # überprüfen enthalten ich festgestellt, dass:

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

ja, ich denke, die <auther></auther> muss das Problem, ich weiß nicht einmal die $ .ajax konw bekommen würde die tagname als auch ich es so umschreiben:

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

dann die div $ enthalten ist:

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

so, die Chrom und Safari konnte wieder zeigen!

+0

Danke, obwohl jemand meinen Kommentar gewählt :( –

4

Sie sollten Chrome oder Safari eingebauten Entwicklertools (Strg + Shift + i) zu verfolgen und aktuelle AJAX-Anfragen verfolgen Fehler JS verwenden.

Ist Ihr Code in document.ready verpackt? Gibt es irgendwelche Fehler in JavaScript-Konsole? Versuchen Sie auch, nach erfolgreicher Callback-Zeile etwas auszugeben.

Ein anderer Grund dafür könnte falscher MIME-Typ für Ihre XML-Datei sein, die vom Server zurückgegeben wird. Es sollte [Inhaltstyp: text/xml] sein. Sie können dies in den integrierten Entwicklerwerkzeugen von Chrome oder Safari überprüfen. Suchen Sie einfach nach dem Header-Tab, wenn die xml-Ressource ausgewählt ist. Wenn es sich um ein tatsächliches Problem handelt, müssen Sie möglicherweise die Webserverkonfiguration (Hauptkonfiguration oder .htaccess für Apache) anpassen, um den korrekten MIME-Typ zurückzugeben.

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

was xml grundsätzlich zurückkehrt, ein Element mit „#“ wie „#mydiv“ oder Klasse wie „.mydiv“

Ich glaube, Sie versuchen, ein Element zuzugreifen, und wenn Sie nicht zurückkehren es mit „#“, versuchen

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

Nein, das macht er nicht. Die XML-Variable ist ein XML-Code. Wenn Sie sie an jQuery übergeben, wird sie von jQuery analysiert. Obwohl ich oft den Fehler mache, den Hash rauszulassen, so guter Vorschlag. –

0

Ich nehme an, Sie haben ein Problem mit dem Lesen der lokalen Datei pro Ajax. Ajax kann verwendet werden, um eine Datei vom selben Webserver zu lesen, aber es gibt einige Sicherheitseinschränkungen, wenn Sie sie nicht per HTTP lesen.

In Firefox und Opera können Sie lokale Dateien (mit URL wie Datei: /// C: /Program%20Files/My/Database/App_all.xml) pro Ajax ohne jedes Problem lesen. In Internet Explorer sollten Sie dataType: 'text' verwenden und dann den Text in XML konvertieren

Um lokale Dateien in Chrome lesen Sie Chrom mit einem anderen Parameter neu zu starten:

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

(Stellen Sie sicher, dass alle anderen Instanzen von chorme vor dem Start chrome.exe in der Art und Weise geschlossen).

+0

Vielen Dank! – hh54188

0

Dies ist ein Problem für lokale Dateien ... Sie sollen versuchen, sie auf einem Web-Server hochladen und überprüfen von dort

+0

Gibt es einen Grund, dass Sie denken, Javascript wird sich auf dem lokalen und Remote-Server anders verhalten? – Apurv

Verwandte Themen