2016-03-19 4 views
0

Ich bin ein Anfänger in Javascipt lernen. Was ich tun möchte, ist, Daten von Koha Bibliothekssystem mit JavaScript-Code zu holen. Koha verwendet Apache2 Webserver und MySQL Datenbank um Kataloge zu speichern.Ich möchte einen JavaScript-Code schreiben, um Daten von Koha (An ILS) zu holen

Mein Code war:

<!DOCTYPE html> 
<html> 
<body> 

<div id="demo"><h2>Result</h2></div> 


<script> 
    var xhttp = new XMLHttpRequest(); 
    xhttp.open("GET","http://127.0.0.1:8080/cgi-bin/koha/svc/bib/3?userid=user&password=user1", false); 
    xhttp.send(); 

    xmlDoc = xhttp.responseXML; 
    txt = ""; 
    x = xmlDoc.getElementsByTagName("a"); 
    for (i = 0; i < x.length; i++) { 
    txt += x[i].childNodes[0].nodeValue + "<br>"; 
    } 
    document.getElementById("demo").innerHTML = txt; 
</script> 

</body> 
</html> 

es nicht funktioniert.

Wenn ich die URL:

http://127.0.0.1:8080/cgi-bin/koha/svc/bib/3?userid=user&password=user1

in meinem Browser erhalte ich diese

This XML file does not appear to have any style information associated with it. The document tree is shown below. 

    <record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/MARC21/slim" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"> 
    <leader>00099nam a22000617a 4500</leader> 
    <datafield tag="020" ind1=" " ind2=" "> 
    <subfield code="a">234234</subfield> 
    </datafield> 
    <datafield tag="245" ind1=" " ind2=" "> 
    <subfield code="a">Harry Potter</subfield> 
    </datafield> 
    <datafield tag="999" ind1=" " ind2=" "> 
    <subfield code="c">3</subfield> 
    <subfield code="d">3</subfield> 
    </datafield> 
    </record> 

ich die Ausgabe mit Hilfe von JavaScript erhalten möchten. Bitte helfen Sie!

+0

Ist jQuery etwas, das Sie möglich nutzen können? Es ist VIEL einfacher, AJAX-Anfragen mit jQuery als nativ auszuführen. –

+0

Vielen Dank, dass Sie sich für die Eingabe des gesamten Codes entschieden haben. Ich werde bei jQuery bleiben, wenn das eine bessere Option ist. Der Code funktionierte, als ich die angezeigten Daten lokal als XML-Datei speicherte. Was ich will, ist, die Daten vom Koha-Server von der URL zu holen: '127.0.0.1:8080/cgi-bin/koha/svc/bib/...' mit Koha svc http API. Dieser Link enthält die Dokumentation: wiki.koha-community.org/wiki/Koha_/svc/_HTTP_API. – Blue

Antwort

0

Wenn jQuery eine Option ist, empfehle ich, sie für Ihren Ajax-Aufruf und Ihre Handhabung von XML zu verwenden. Ich habe Ihre XML-Ergebnisse als Datei lokal als "Temp.xml" gespeichert und die folgende Seite auf einem lokalen Webserver erstellt. Der Aufruf $.get("Temp.xml") ist ein Ajax-Aufruf, bei dem die Datei als XML-Dokument in den Speicher geladen wird. Von dort benutze ich jQuery, um die gewünschten Knoten zu finden und sie auf die Seite zu schreiben. (document.write ist wahrscheinlich nicht der beste Weg, um die Daten auf der Seite zu bekommen, aber es wird die Arbeit zu Demonstrationszwecken.)

<!DOCTYPE html> 
<html> 
<body> 

<div id="demo"><h2>Result</h2></div> 

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.js"></script> 
<script> 
    // Get the xml via a "GET" request. When it's done, process the results. 
    $.get("Temp.xml").done(function(xmlDoc) { 
     // The resulting xml is basically a bunch of datafield nodes that contain 
     // subfield nodes. Write each datafield values and then each of their 
     // subfield values. 
     $(xmlDoc).find("datafield").each(function(index, datafield) { 
      // getAttribute can be used on native elements to get their attribute values... 
      document.write('datafield[tag] = ' + datafield.getAttribute('tag')); 
      document.write('<br>'); 

      // $(...) wraps an element with jQuery functionality and allows you quickly 
      // and easily find/process particular notes. 
      $(datafield).find("subfield").each(function(index, subfield) { 
       document.write(' &nbsp; &nbsp; '); // for indentation 
       document.write('subfield[code] = ' + subfield.getAttribute('code')); 
       document.write(', '); // for indentation 
       document.write('subfield = ' + subfield.textContent); 
       document.write('<br>'); 
      }); 
     }); 
    }); 
</script> 

</body> 
</html> 
+0

Vielen Dank, dass Sie sich Mühe gegeben haben, den gesamten Code einzugeben. Ich werde bei jQuery bleiben, wenn das eine bessere Option ist. Der Code funktionierte, als ich die angezeigten Daten lokal als XML-Datei speicherte. Was ich will, ist die Daten vom Koha-Server von der URL abzurufen: 'http://127.0.0.1:8080/cgi-bin/koha/svc/bib/3?userid=user&password=user1' mit Koha svc http API . Dieser Link gibt seine Dokumentation: https://wiki.koha-community.org/wiki/Koha_/svc/_HTTP_API. – Blue

+0

Also ist der Parameter zu $ ​​.get die URL Ihres Web Service. Sie müssen lediglich $ .get ("Temp.xml") in $ .get ("127.0.0.1:8080/cgi-bin/koha/svc/bib") ändern oder was auch immer Ihr Web-Service ist. Ich habe koha lokal nicht ausgeführt, also enthielt mein Code-Beispiel das nicht, aber es sollte für Sie arbeiten. –

+0

Ich habe das versucht und es hat dann nicht funktioniert. Aber später fand ich heraus, dass mein Browser keine Cross-Source-Ressourcenfreigabe erlaubte. Ich habe eine Chrome CORS Erweiterung hinzugefügt und es hat funktioniert! Vielen Dank für den Code und die Erklärung. Ich bin jetzt in jQuery. :) – Blue

Verwandte Themen