Per js(ajax) NUR einen Datensatz aus XML-Datei finden
mikikado
- javascript
Hallo Forumler!
Ich habe ein Problem zu deren Lösung ich irgendwie nichts passendes im Netz gefunden habe. Ich möchte per javascript auf eine XML Datei zugreifen, dort nach einem "Suchstring" suchen und wenn gefunden in diesem Datensatz dann den Wert eines anderen Feldes in die variable des From-Feldes übergeben. D.h. ich benötige aus der XML nur einen einzigen spezifischen Feld und nicht komplett die Liste. Die Beispiele im Netz beziehen sich fast komplett auf "Liste erzeugen".... :(
Habe hierzu zunächst ein Muster der XML-Datei:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<preiseBau>
<reinigungEFHETW>
<suchfeld>Test</suchfeld>
<etwefhart>Hallo 1</etwefhart>
<zimmer>1</zimmer>
<qm>10</qm>
<preis>100</preis>
</reinigungEFHETW>
<reinigungEFHETW>
<etwefhart>Hallo 2</etwefhart>
<zimmer>1</zimmer>
<qm>10</qm>
<preis>100</preis>
</reinigungEFHETW>
<reinigungEFHETW>
<etwefhart>Hallo 3</etwefhart>
<zimmer>1</zimmer>
<qm>10</qm>
<preis>100</preis>
</reinigungEFHETW>
</preiseBau>
Script Code zum suchen:
$('#flaeche').on('change', function () {
var str1 = $('#immobilienart').val().substr(0, 3)
var str2 = $('#reinigungsart').val()
var str3 = $('#zimmer_1').val().substr(0,1)
if ($('#zimmer_1').val().length == 3) {
var str3a = $('#zimmer_1').val().substr(0,1)
var str3b = $('#zimmer_1').val().substr(2,1)
var str3 = str3a+str3b
}
var str4 = $('#flaeche').val()
strSearchterm = str1+str2+str3+str4
alert (strSearchterm)
// XML Datei laden
$.ajax({
type: "GET",
url: "http://www.maksy-clean.de/js/xml_preise_immo.xml",
dataType: "xml",
success: function (data) {parseXML(data)}
})
function parseXML(data) {
$(data).find('reinigungEFHETW')
.find("suchfeld:contains('"+strSearchterm+"')")
.each(function(){
$(this).find('preis').text().appendTo('#preis')})
}
});
Irgendwie wird die Abfrage jedoch nicht ausgeführt.... (Bis zur zusammenstellung vom Suchstring funktioniert alles!!!) Was übersehe ich?
Hoffe dass jemand mir helfen kann und bedanke mich schon im Voraus dafür. HG Michael
Lieber mikikado,
mal sehen, inwiefern ich durch Deinen Code durchsteige...
$.ajax({
> type: "GET",
> url: "http://www.maksy-clean.de/js/xml_preise_immo.xml",
> dataType: "xml",
> success: function (data) {parseXML(data)}
>
> })
[...] Irgendwie wird die Abfrage jedoch nicht ausgeführt.... (Bis zur zusammenstellung vom Suchstring funktioniert alles!!!) Was übersehe ich?
http://www.maksy-clean.de/js/xml_preise_immo.xml liefert einen 404er. Du meinstest wahrscheinlich http://www.maksy-clean.de/xml_preise_immo.xml (ohne das Unterverzeichnis "/js"):
$.ajax({
type: "GET",
url: "http://www.maksy-clean.de/xml_preise_immo.xml",
dataType: "xml",
success: function (data) {parseXML(data)}
});
Und: Bitte verwende Semikola am Ende von JS-Anweisungen!
Liebe Grüße,
Felix Riesterer.
Hallo Felix.
Hattest recht. Ich habe die Datei nun verschoben. Komischerweise funktionieren jetzt beide links..?? Semikolon fehlt, da dieser Code in Seblod unter joomla 3.x verwendet wird und hier Semikolon zu "Fehlern" führt. Es liegt sicherlich nicht an Semikolon (ist mir auch bekannt)! denn " alert ('test') funktioniert! Auch String wird zusammengestellt und auch per alert angezeigt!
Also muss irgendwas an der XML-Suche liegen!
HG Michael
Lieber mikikado1,
Ich habe die Datei nun verschoben. Komischerweise funktionieren jetzt beide links..??
das ist nur deshalb so, weil Dein Browser die Datei unter der alten Adresse noch im Cache hat. Bei einem Reload siehst Du den 404er.
Semikolon fehlt, da dieser Code in Seblod unter joomla 3.x verwendet wird und hier Semikolon zu "Fehlern" führt.
Dann ist entweder Joomla! kaputt oder Seblod.
Also muss irgendwas an der XML-Suche liegen!
Dann sollte aber Deine JavaScript-Konsole etwas vernünftiges sagen können - oder Du machst Dir halt vernünftige Debug-Ausgaben in Dein Script.
Liebe Grüße,
Felix Riesterer.
Also ob es an SEBLOD oder j! liegt, dass ich ohne ' ; ' schreiben muss ist für mich kein Problem solange es funktioniert!
GET Anweisung wird durchgeführt und die xml-Datei auch geöffnet soweit ich es in FireFox nachvollziehen konnte.
Aber die Suche (= Finden) funktioniert nicht. Und ich weiß nicht woran es liegt. Ich habe im Netz keinen Hinweis für die Suche nach einem Element gefunden. Alle Beispiele laden xml Daten und zeigen entweder als Liste oder Es werden für die Elemente der Seite web-links geladen. Deshalb habe ich ".each" übernommen (versucht auf meine "Vorstellung" umzumodeln). Klappt aber nicht!
Wer hat eine Idee?
Moin!
Frage des Tages:
Du holst, so verstehe ich das, eine xml formulierte(*) Tabelle mit mehreren Datensätzen ab.
Danach willst Du, so verstehe ich das, daraus eine Zeile nehmen und irgendwie weiter verwenden.
Das führt zu folgenden Fragen:
Dann könntest Du nämlich ein JS-Objekt erzeugen und dessen Eigenschaften nativ und sehr direkt nach den benötigten Eigenschaften fragen ohne den Umweg über das XML zu gehen.
*) Ich nenne das "Formulieren", weil es letztendlich doch immer nur Text ist, bei dem die Informationen, wenn auch technisch, formuliert werden, was sogar "formal" geschieht.
Jörg Reinholz