Autor Zpráva
supik007
Profil *
Dobrý den všem !
Na stránce, kterou tvořím, jsem chtěl spuštěním XMLHttpRequest-u získat obsah DIV-u. PHP script to vracel přes echo, vše OK. Pak ale nastala situace, kdy jsem do toho divu potřeboval vpravit také JS kód, který by se po načtení spustil. Volat Request 2krát bylo neschůdné, tak jsem to zkusil tak, že ten PHP script nevrací jen HTML kód, ale XML strukturu, kde je html a JS extra, a předpokládal jsem, že si to pak JS funkce, která se stará o zpracování výsledku požadavku nějak přebere. A zde klopýtám ... v práci s XML funkcemi a strukturami jsem opravdu lama, a nedaří se mi dovést záměr do konce.
Obracím se proto s prosbou o "nastartování" k tomuto fóru, kde ač jsem hledal dlouho, podobnou otázku jsem nenalezl.
Ještě dodáván, že ten JS v XML strukruře posílám ve formě kódu nikoliv odkazu (nutnééé).

Zde nástin mého bludiště :

Funkce, zpracovávající výsledek dotazu

function fill_box(box,response,cType) {
if (! document.getElementById(box).innerHTML) {
alert ('objekt '+box+' neexistuje');
return false;
}
if (cType == 'text/html') {
document.getElementById(box).innerHTML = response.responseText;
}

if (cType == 'text/xml' ) {
var xml_doc = response.responseXML.????? zde bádám
//document.getElementById(box).innerHTML= ????????? zde nevím
alert(xml_doc); /// čin naprostého zoufalství
check_ob(xml_doc);
//// a ten JS, co se mi vrátí, to už vůbec nevím
}
/// tohle je jen pro "testování, co se mi vlastně vrací ... nic moc jsem tím nezjistil
function check_ob(object){
var a = '';
var ob;
for(ob in object)
a += ob +' = '+object[ob] +'<br>';
//+' = '+object[ob];
document.getElementById('mainbox').innerHTML = a;
}

return true;
}

PHP script, který vrací výsledek, vypadá na konci takto
:
echo "<response> ";
echo "<ahtml> $div_layout </ahtml> ";
echo "<ajs>".$js."</ajs> ";
echo "</response> ";

Jinak všem kteří se pročetli až sem, děkuji, a pokud by tomu někdo rozuměl a "poslal" mě správným směrem, budu vděčný. V podstatě by mi stačil i nějaký odkaz na objasnění, jak to XML vlastně funguje, Článek o ajaxu na rootu jsem četl, ale tam je XML je okrajově, moc mi to nedalo :(.

Díky
Milan
peta
Profil
"jsem opravdu lama"
Tak to asi fakt nepujde, zvireci reci neumim komunikovat, natoz vysvetlit. Az zas budes clovek, dej vedet.

Vzdycky si muzes Alertem zobrazit vysledek. Misto do XML si to posli do response text a pekne aletrem si zobraz, co ti vraci tvuj php script za nesmysli.
Treba tam mas spatne uvozovky.
Co ti vyhlasi JS konzola za chybu? Bez toho nelze poradit, ani kdyby se clovek rozkrajel. Cili bud reknes, co hlasi za chybu nebo dej odkaz na stranku.

alert(xml_doc); /// čin naprostého zoufalství
... ti zobrazi, ze xml_doc je objekt.
alert(xml_doc['ajs'])
... by ti mohl zobrazit obsah tagu AJS v xml
ale jistotu bych mel pri poslani xml_doc jako resposeText a pak alert(xml_doc);



var xml_doc = response.responseXML.????? zde bádám
google.com
treba ti pomuze:
http://www.volny.cz/peter.mlich/www.htm#msub13
# peter-mlich.wz.cz PHP+MySQL+JSAjax minichat (14k) (POST)
# www.volny.cz/peter.mlich (zdroj: chatminiAjax.rar 5k)
... http://peter-mlich.wz.cz/programs/machat/ajax.js
... Jenze, pokud pouzivas diakritiku, je treba si pohlidat take spravne kodovani, jak v PHP, tak v JS a tez v odpovedi.
http://www.volny.cz/peter.mlich/www.htm#mssub16
http://www.volny.cz/peter.mlich/programs/ajax1/
supik007
Profil *
petře, díky za odpověď ...
muj php script blbiny nevrací, ptoroze pres responseText (a osekání XML vaty) to fungovalo. Bádal jsem dále, a zjistil jsem, že asi nemůžu přes to XML tlačit syrové HTML, protože po nahrazení

echo "<ahtml> $div_layout </ahtml> ";

echo "<ahtml> htmlspecialchars($div_layout) </ahtml> ";

jsem už data z uzlu ahtml vydoloval ... ale bylo už dnes ráno, tak jsem to nechal na dnešek. Uvidím, kam se dostanu...
Jen mám ještě dotaz : pokud přidám element script

var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = '';
headID.appendChild(newScript);

jak naplním script jinak než přes .src vlastnost? Chtěl bych si scritp poslat ajaxem jako text, a pak namísto vlastnosti src použít třeba innerText nebo tak, a pak teprve připojit k dokumentu... dá se to nějak provést ?


Milan
peta
Profil
K moznym chybam jeste toto:
http://xkr.us/articles/javascript/encode-compare/
dost lidi v tom dela chybu

k tvemu problemu 2
pres JS
SCRIPT je normalni tag, takze v nejakem prohlizeci na to staci innerHTML pro jiny si musis najit na strance prohlizece JS funkci
pres PHP
SCRIPT src=soubor.js.php
a v souboru zadas type=javascript ve funkci header()
cz.php.net/header

document.getElementsByTagName("head")
spousta starsich prohlizeci tuto funkci nezna, je dobre pridat prototype

k tvemu problemu 2b
nove dotaz nove tema

k problemu 1
pouzivej TEXT, na XML se vykasli, to spousta Opera a jinych alternativnich prohlizecu zpracovava spatne s cestinou.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0