tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1907
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    dtm dtm ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    23
    Hy

    wie kann ich mit Javascript eine Datei (CSV/TXT) die auf dem gleichen Server (Verzeichnis) wie die HTML-Dateit mit dem Script liegt Zeilenweise / Zeichenweise ab einer bestimmten Pos. einlesen?

    Zur Not wäre es auch möglich, die ganze Datei einzulesen und danach in Zeilen zu trennen
     

  2. #2
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    wenn sich die CSV-Datei unter der gleichen Domain befindet, könntest du mittels eines AJAX-Requests Zugriff auf den Inhalt bekommen.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <script type="text/javascript">
      <!--
    var xmlHttp = false;
     
    function instanceRequest(){
      if(window.XMLHttpRequest){
        xmlHttp = new XMLHttpRequest();
      }else if(window.ActiveXObject){
        try{
          xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
          try{
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
          }catch(e){}
        }
      }
     
      if(!xmlHttp){
        alert('Es konnte keine XMLHTTP-Instanz erzeugt werden!');
        return false;
      }
    }
     
    function theRequest() {
      // Falls noch ein Request-Objekt existiert -> zunächst beenden
      if(xmlHttp && xmlHttp.readyState){
        xmlHttp.abort();
        xmlHttp = false;
      }
     
      if(!xmlHttp){
        instanceRequest();
      }
     
      // POST-Request
      xmlHttp.open('get', 'test.csv', true);
     
      xmlHttp.onreadystatechange = function () {
        if(xmlHttp.readyState == 4){
          if(xmlHttp.status == 200){
            document.getElementById("outID").innerHTML = xmlHttp.responseText;
     
            // Sonstige Bearbeitungen
          }
        }
      };
     
      // Request absetzen
      xmlHttp.send();
     
    }
     //-->
    </script>
    </head>
    <body>
    <button onclick="theRequest();">Request</button>
    <div id="outID"></div>
    </body>
    </html>

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  3. #3
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    nur der Vollständigkeit halber, aber vielleicht nützt es dir ja bei deiner Anwendung: Microsoft-Datenabindung..funktioniert natürlich nur im InternetExplorer
     

  4. #4
    dtm dtm ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    23
    Zitat Zitat von Quaese Beitrag anzeigen
    Hi,

    wenn sich die CSV-Datei unter der gleichen Domain befindet, könntest du mittels eines AJAX-Requests Zugriff auf den Inhalt bekommen.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <script type="text/javascript">
      <!--
    var xmlHttp = false;
     
    function instanceRequest(){
      if(window.XMLHttpRequest){
        xmlHttp = new XMLHttpRequest();
      }else if(window.ActiveXObject){
        try{
          xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
          try{
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
          }catch(e){}
        }
      }
     
      if(!xmlHttp){
        alert('Es konnte keine XMLHTTP-Instanz erzeugt werden!');
        return false;
      }
    }
     
    function theRequest() {
      // Falls noch ein Request-Objekt existiert -> zunächst beenden
      if(xmlHttp && xmlHttp.readyState){
        xmlHttp.abort();
        xmlHttp = false;
      }
     
      if(!xmlHttp){
        instanceRequest();
      }
     
      // POST-Request
      xmlHttp.open('get', 'test.csv', true);
     
      xmlHttp.onreadystatechange = function () {
        if(xmlHttp.readyState == 4){
          if(xmlHttp.status == 200){
            document.getElementById("outID").innerHTML = xmlHttp.responseText;
     
            // Sonstige Bearbeitungen
          }
        }
      };
     
      // Request absetzen
      xmlHttp.send();
     
    }
     //-->
    </script>
    </head>
    <body>
    <button onclick="theRequest();">Request</button>
    <div id="outID"></div>
    </body>
    </html>

    Ciao
    Quaese
    Das läuft bei mir nicht
    aber
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    <script type="text/javascript" language="javascript">
    // FileRead
    /*
    Mozilla 0.9.6, Linux (Debian).
    Mozilla 0.9.7, NT4.
    Mozilla 0.9.8, Linux (Red Hat 7.1).
    Mozilla 0.9.9, Win2000.
    Mozilla 0.9.9, NT4.
    Mozilla 0.9.9, Linux (Red Hat 7.2).
    Mozilla 1.0 RC1, FreeBSD.
    Netscape 6.1, NT4.
    Netscape 6.2.1, Win2000.
    Netscape 6.2.2, Win2000.
    Netscape 6.2.2, NT4.
    Netscape 6.2.2, Linux (Debian).
    Netscape 7 Win2000
    Netscape 8 Win2000
    Firefox 1.07 Win2000
    Firefox 1.5 Win2000
    Opera 8.51 Win2000
    Avant Browser 10 Win2000
    Internet Explorer 6.0 SP1 Win2000
    Internet Explorer 7.0 Windows Vista
    */
     
     
    function ReadFile(fileUrl) {
        var req;
        var fileContent;
        // branch for IE/Windows ActiveX version
        if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
            req.open("GET", fileUrl, false);
            req.onreadystatechange=function() {
                                        if (req.readyState == 4) {
                                            fileContent = req.responseText;
                                        }
                                    }
            req.send(null);
        // branch for native XMLHttpRequest object
        } else if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
            req.open("GET", fileUrl, false);
            req.send(null);
            fileContent = req.responseText;
        }
        return fileContent;
    }// FileRead End
     
     
    alert(ReadFile("test.csv"));
    </script>

    geht.
    Das habe ich irgendwo gefunden aber noch nicht ganz kapiert.

    Wie kann ich aber nur ab einer gewissen Position (z.B. Byte 400) einlesen.
    Geht das überhaupt?
     

  5. #5
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    das von dir gepostete Script funktioniert ähnlich wie meins - mit dem Unterschied, es führt einen synchronen Request aus (drittes Argument in open-Methode).

    Ab einer bestimmten Position einzulesen ist nicht möglich, zumindest ist mir keine Möglichkeit bekannt.
    Aber vielleicht kannst du dich über die Variablengrösse annähern. Ein String ist als endliche Sequenz von Null oder mehr vorzeichenlosen 16-Bit Integerwerten definiert. Damit könnte es möglich sein, ein Offset zu berechnen. Einfach mal versuchen.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. Mit C .txt zeilenweise einlesen
    Von MrMorpheus im Forum C/C++
    Antworten: 28
    Letzter Beitrag: 27.02.12, 18:54
  2. Datei zeilenweise einlesen - aber nicht die erste Zeile
    Von FoolMoon im Forum Java Grundlagen
    Antworten: 2
    Letzter Beitrag: 13.02.10, 19:22
  3. txt zeilenweise einlesen?
    Von Fichmopp im Forum Visual Basic 6.0
    Antworten: 16
    Letzter Beitrag: 16.05.05, 20:05
  4. Datei zeilenweise in Array einlesen!
    Von abi22 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 12.10.04, 13:21
  5. Datei zeilenweise einlesen
    Von Shadow im Forum Java
    Antworten: 2
    Letzter Beitrag: 10.10.04, 21:28