Vkládání elementu z XML do XHTML – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vkládání elementu z XML do XHTML – JavaScript, AJAX, jQuery – Fórum – Programujte.comVkládání elementu z XML do XHTML – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Míša
~ Anonymní uživatel
106 příspěvků
26. 11. 2008   #1
-
0
-

Ahoj, řeším jeden problém a nevím si rady:

přes Ajax si načtu xml soubor, například:



<?xml version="1.0" encoding="UTF-8" ?>
<result>
<fieldset>
<input type="text" name="asdf" value="" />
</fieldset>
</result>


A jde mi jednoduše o to vložit obsah elementu result do (x)html stránky. (Nemůžu to udělat přes innerHTML, protože při jeho použití se odstraní všechny value v inputech, které už vložené mám a do kterých uživatel něco napsal.)

A proto to řeším přes DOM, nějak takhle:


// xmlHttp : XMLHttpRequest
// While proto, když je v resultu víc elementů na stejné ůrovni.
while( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].hasChildNodes() )
{
document.getElementById( 'asdf' ).appenChild( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].firstChild );
}


Tohle dáseříct funguje, až na malý problém. Pokud se podívám jak vypadá zdrojový kód (Opera Dragonfly), vidím že se elementy z xml prvku result vložily správně (ve zdrojáku jsou zobrazené tak jak mají být).
Jde ale o to že Opera, FireFox ani IE vložené elementy nezobrazí (když je zkouším vložit tak že místo z toho xml souboru je v JS přímo vytvořím přes createElement tak to jde).

Nenapadá vás co s tím?

Došel jsem akorát na to že stačí hned po vložení elementů do xhtml přiřadit prvku, do kterého to vkládám svoje vlastní innerHTML tak se to zobrazí, jenže tím příjdu o vyplněné inputy, tak jak jsem psal na začátku.

Funguje to teda takhle, jenže je to (pro mě) nepoužitelné a nesmyslné:


while( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].hasChildNodes() )
{
document.getElementById( 'asdf' ).appenChild( xmlHttp.responseXML.getElementsByTagName( 'result' )[ 0 ].firstChild );
}
document.getElementById( 'asdf' ).innerHTML = document.getElementById( 'asdf' ).innerHTML;


Moc díky za reakce...

Nahlásit jako SPAM
IP: 88.102.27.–
Míša
~ Anonymní uživatel
106 příspěvků
27. 11. 2008   #2
-
0
-

Tak jsem to vyřešil takhle, kdyby to někdo někdy potřeboval (našle jsem to na nějakém fóru, už ani nevím kde...):

function XMLtoHTML( xml )

{
switch( xml.nodeType )
{
case 1:
var i;
var html=document.createElement( xml.nodeName );
for ( i = 0; i < xml.attributes.length; i++ )
{
attr=xml.attributes.item( i );
html.setAttribute( attr.name, attr.value );
}
html.setAttribute( attr.name, attr.value );
for ( i = 0 ; i < xml.childNodes.length; i++ )
{
html.appendChild(XMLtoHTML( xml.childNodes[ i ] ) );
}
return html;
case 3:
return document.createTextNode( xml.nodeValue );
}
}


Jde vlastne o to ze se ty elementy znovu vytvori podle puvodnich z xml a jede to... :smile18:

Nahlásit jako SPAM
IP: 88.102.27.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Zmena hodnoty elementu v XML — založil vlado0991

XHTML versu XML — založil Antonín Daněk

Vkladani zaznamu z XML do databaze — založil Anonymní uživatel

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý