jquery xml-dateien einlesen alle 20 sekunden.

Webesek

Mitglied
Hi Leute ich möchte mittels jquery eine xml Datei alle 20 Sekunden auslesen.
Habe das Problem das ich die komplette xml datei ausgegeben bekomme, aber nur ein bestimmten Bereich haben will.
Das nächste wäre das die Datei sich alle 20 Sekunden ändert und ich es in einer Intervall packen will.
Hat jemand ne Lösung für mich..?

wäre wirklich sehr dankbar..

Meine aktuellen Dateien :


Index
PHP:
<!DOCTYPE html>
<html>
<head>
   <title>XML AUSLESEN</title>
   <meta charset="UTF-8">
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
   
   <script type="text/javascript">
 
   $(document).ready(function(h1)
   {
 
        $.get("song.xsl", function(XMLmediaArray){
        $(XMLmediaArray).find("mount").each(function(){
        var $myMedia = $(this);
        var song = $myMedia.find("song").text();
        var stream = $myMedia.find("stream").text();
        $("#mediaContainer").append(
           "<h3>"+song+"</h3><p>"+stream+"</p>");
        });
     });
   });		

   </script>
</head>
<body>
 
<div id="mediaContainer">
</div>
 
</body>
</html>

XML

PHP:
<?xml version="1.0"?>
<cast>
<mount>
<stream>
Stream 1
</stream>
<song>
Song 1
</song>
</mount>
<mount>
<stream>
Stream 2
</stream>
<song>
Song 2
</song>
</mount>
<mount>
<stream>
Stream 3
</stream>
<song>
Song 3
</song>
</mount>
<mount>
<stream>
Stream 4
</stream>
<song>
Song 4
</song>
</mount>
</cast>

LG

Bilal
 
(a) jQuery existiert inzwischen in einer Version 1.83. Da einige Änderungen stattgefunden haben, würde ich Dir empfehlen, gleich mit der aktuellen zu arbeiten.
Code:
https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js

(b) In den Untiefen des Netzes findet sich für jQuery das Timers-Plugin, dass für Deine zweite Frage die Antwort wäre. Einfach zu benutzen.
http://jquery.offput.ca/timers/ bzw. http://archive.plugins.jquery.com/project/timers

(c) :) Bin grad unterwegs, und kann es nicht nachbauen. Hast Du Dir mal testweise alerts eingebaut, um zu schauen, was in den Variablen abgelegt ist? zB in die each-funktion ein
Code:
alert($MyMedia);
oder mit firebug Stoppunkte gesetzt und dann die Variablen angeschaut?

mfg chmee
 
Danke für die schnelle Antwort.

Nach langem probieren hab ich das problem so gelöst :

PHP:
<!DOCTYPE html> 
<html> 
<head> 
   <title>XML AUSLESEN</title> 
   <meta charset="UTF-8"> 
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    
   <script type="text/javascript"> 
  
   setInterval(function() {
  
       $(document).ready(function(h1) 
   { 
  
        $.get("song.xsl", function(XMLmediaArray){ 
        $(XMLmediaArray).find("mount").each(function(){ 
        var $myMedia = $(this); 
        var song = $myMedia.find("song").text(); 
        var stream = $myMedia.find("stream").text(); 
        $("#mediaContainer").append( 
           "<h3>"+song+"</h3><p>"+stream+"</p>"); 
        }); 
     }); 
   });         
}, 3000);

setInterval(function() {
 $("#mediaContainer").empty();       
}, 2999);

   </script> 
</head> 
<body> 
  
<div id="mediaContainer"> 
</div> 
  
</body> 
</html>


Nur wie bekomme ich es hin das nur der 2. stream und song ausgelesen wird..?
und bei opera funktioniert das ganze gar nicht nur bei mozilla und IE

LG
Bilal
 
Hi,

besser wäre es, den Interval-Aufrauf in den ready-Handler zu packen.
Javascript:
$(document).ready(function()  {
  window.setInterval(function()  {
    $.get("song.xsl", function(XMLmediaArray)  { 
      $(XMLmediaArray).find("mount").each(function() { 
        var $myMedia = $(this); 
        var song = $myMedia.find("song").text(); 
        var stream = $myMedia.find("stream").text(); 
        $("#mediaContainer").append( "<h3>"+song+"</h3><p>"+stream+"</p>"); 
      });
    });
  }, 20000);
});

BTW fehlte bei dir einmal });. Manche Browser durchlaufen den Code dann halt stur bis zum ersten Problem, andere nicht.
 
Hi,

Danke für die Antwort aber leider besteht das Problem immer noch in Opera und wie bekomme ich es hin das nur bestimmt Bereiche ausgeben werden..?

LG
Bilal
 
Da sind noch ein paar Debug-Anweisungen dabei, macht aber nix.
Javascript:
var counter = 1;
var getSongs = function()  {
	$.get("song.xsl", function(XMLmediaArray)  { 
		$('#mediaContainer').html("<h2>"+counter+"</h2>");
		counter++;

		$(XMLmediaArray).find("mount").each(function() { 
			var $myMedia = $(this); 
			var song = $myMedia.find("song").text(); 
			var stream = $myMedia.find("stream").text(); 
			if(stream.indexOf("Stream 2") > -1)  {
				$("#mediaContainer").append( "<h3>"+song+"</h3><p>"+stream+"</p>"); 
			}
		});
	});
}
$(document).ready(function()  {
	alert('Test');
	window.setInterval("getSongs()", 5000);
});
 
Das funktioniert leider nicht die xml Datei ändert sich alle 3 min deswegen ist das hier nicht mehr der fall
PHP:
if(stream.indexOf("Stream 2") > -1)  {
                $("#mediaContainer").append( "<h3>"+song+"</h3><p>"+stream+"</p>"); 
            }


ich muss definieren können zum z.B. dass das 3 mount abgegriffen wird und der Inhalt song und stream vom mount 3 angezeigt werden...

LG
 
super Danke funktioniert perfekt :)

nur da wäre noch das Problem mit Opera :( dafür finden wir glaub ich keine Lösung google weiß ausnahmsweise dafür auch kein Rat...

PHP:
  var counter = 1;
var getSongs = function()  {
    $.get("song.xsl", function(XMLmediaArray)  { 
        $('#mediaContainer').html("<h2>"+counter+"</h2>");
        counter++;
 
        $(XMLmediaArray).find("mount").eq(1).each(function() { 
            var $myMedia = $(this); 
            var song = $myMedia.find("song").text(); 
            var stream = $myMedia.find("stream").text(); 
           
                $("#mediaContainer").append( "<h3>"+song+"</h3><p>"+stream+"</p>"); 
            
        });
    });
}
$(document).ready(function()  {
    
    window.setInterval("getSongs()", 500);
});
 

Neue Beiträge

Zurück