Forum FAQForum FAQSearchSearch MemberlistMemberlist Forum ignore listForum ignore list RegisterRegister ProfileProfile Log in to check your private messagesLog in to check your private messages Log inLog in
HttpRequest problem pocetnik (pomoc)

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Client-side
View previous topic :: View next topic  
Author Message
gilgamesh_-



Joined: 02 Sep 2007
Posts: 4

PostPosted: 03.09.2007 18:37    Post subject: HttpRequest problem pocetnik (pomoc) Add user to your forum ignore list Reply with quote

Pozdrav svima, poceo sam nesto sa ajaxom da radim pa sam naisao na problem. Ako je netko voljan pomoci, bio bi zahvalan.

Imam slijedeci javascript na stranici:
Code:
window.onload = initXHRreq;

var xhr = false;

function initXHRreq() {

   document.getElementById("XML_azija_request").onclick = getFile;
   document.getElementById("XML_zapad_request").onclick = getFile;
}

function getFile() {
   makeRequest(this.href);
   return false;
}

function makeRequest(url) {
   if (window.XMLHttpRequest) {
      xhr = new XMLHttpRequest();
      xhr.onreadystatechange = showContent;
      xhr.open('GET', url, true);
      xhr.send(null);
   }
   else {
      if (window.ActiveXObject) {
         try {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
            xhr.onreadystatechange = showContent;
            xhr.open('GET', url, true);
            xhr.send(null);
         }
         catch (e) {}
      }
   }      
}

function showContent() {
   if (xhr.readyState == 4) {
   if (xhr.status == 200) {
      
         var xmlFile = xhr.responseXML;
         var tagElem = xmlFile.getElementByTagName('Catalog')[0];
         document.getElementById("content").innerHTML = tagElem;
         
   }}
      
   else {
         
         document.getElementById("content").innerHTML = "Evo jos jedan problem j****u <br /> Status: " + xhr.status + "<br />readyState: " + xhr.readyState;
   }
}


U samom HTML-u stranice imam dva linka:
Code:
<a id="XML_azija_request" href="Azijska_produkcija.xml">Azijska produkcija</a><br />
<a id="XML_zapad_request" href="Zapadna_produkcija.xml">Zapadna produkcija</a>


... i jedan
Code:
<div id="content">&nbsp;</div>


Trebalo bi na klik na poveznice otvoriti xml fileove u divu (znaci bez otvaranja ove stranice), ali nece. Umjesto toga mi izbacije da je XMLHttpRequest.status = 200 (znaci ok) i XMLHttpRequest.readyState = 3 (a trebalo bi biti 4) Question

Text fileove mi otvara dobro.
Evo i primjer xml datoteke
Code:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="katalog.xsl"?>

<Catalog xml:lang="ENG">
   <Row>
    <name>Dreams</name>
    <year >1990</year>
    <link>http://www.imdb.com/title/tt0100998/</link>
    <director>Akira Kurosawa</director>
   </Row>
</Catalog>
Back to top
View user's profile Send private message
Sulien



Joined: 04 Jan 2004
Posts: 2905
Location: Zagreb

PostPosted: 03.09.2007 19:53    Post subject: Add user to your forum ignore list Reply with quote

Imaš tri greške: getElementsByTagName se piše u pluralu; onreadystate handler bi ti trebao preskakati sve "ready states" prije četvrtog; i malo je glupo staviti XML node direktno u innerHTML nekog elementa u dokumentu, ali ako ti browser to oprosti onda mogu i ja.

Napisao sam malo ljepše tvoj kod, pa pogledaj:
http://pastie.caboo.se/93549

Zanima me, što si točno htio ovime da radi?
Code:
var tagElem = xmlFile.getElementByTagName('Catalog')[0];
document.getElementById("content").innerHTML = tagElem;
Back to top
View user's profile Send private message Send e-mail Visit poster's website
gilgamesh_-



Joined: 02 Sep 2007
Posts: 4

PostPosted: 03.09.2007 21:38    Post subject: Add user to your forum ignore list Reply with quote

Sulien wrote:

Napisao sam malo ljepše tvoj kod, pa pogledaj:
http://pastie.caboo.se/93549

Zanima me, što si točno htio ovime da radi?
Code:
var tagElem = xmlFile.getElementByTagName('Catalog')[0];
document.getElementById("content").innerHTML = tagElem;


Hvala na kodu sutra cu pogledat (sad mi se pajki).

Htio sam da mi izlista tag sa imenom catalog u inner htmlu od diva. Pretpostavljam da sam htio recimo smo ime directora trebalo bi

getElementsByTagName('director')[0];

U medjuvremenu sam promjenio onaj svoj kod na :
Code:
var xmlFile = xhr.responseXML;
         document.getElementById("content").innerHTML = xmlFile;


Sad mi u innerHTML ispise
Code:
[object XMLDocument]
. Sta bi to trebalo znacit? Da je xml file dobiven ali ga ne moze procitat?
Back to top
View user's profile Send private message
Sulien



Joined: 04 Jan 2004
Posts: 2905
Location: Zagreb

PostPosted: 04.09.2007 12:27    Post subject: Add user to your forum ignore list Reply with quote

Ne, to samo znači da sam bio u pravu kad sam tvrdio da ne znaš što radiš.

innerHTML ti je string property, što znači da iz njega i u nj čitaš i pišeš stringove. Tvoja varijabla xmlFile sadrži XMLDocument objekt, što nije string (daleko od toga). JavaScript će to implicitno pretvoriti u string i dobit ćeš "[object XMLDocument]". Ništa čudno.

Mislim da radiš s XML-om, a da zapravo ne znaš zašto (osim što si to vidio na tutorialima). Drugim riječima, ne znaš ga parsirati. Zašto ne namjestiš server da ti vrati HTML kao Ajax response? Onda bi mogao imati ovo kao handler funkciju:
Code:
document.getElementById("content").innerHTML = xhr.responseText
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Sulien



Joined: 04 Jan 2004
Posts: 2905
Location: Zagreb

PostPosted: 04.09.2007 12:57    Post subject: Add user to your forum ignore list Reply with quote

Ako baš želiš raditi s postojećim XML-om (tj. ako imaš neki razlog za to), evo kako možeš parsirati rezultat tvog Ajax requesta: http://pastie.caboo.se/93749
Back to top
View user's profile Send private message Send e-mail Visit poster's website
gilgamesh_-



Joined: 02 Sep 2007
Posts: 4

PostPosted: 04.09.2007 15:17    Post subject: Add user to your forum ignore list Reply with quote

Dobro ... Embarassed

Hvala na informacijama (to sam i trazio; informacije). Isao sam koristiti xml ne zato sto mi treba vec zato sto sam htio vidjeti sta to je Twisted Evil (sad opet mogu ici plakati)
Back to top
View user's profile Send private message
Sulien



Joined: 04 Jan 2004
Posts: 2905
Location: Zagreb

PostPosted: 06.09.2007 01:50    Post subject: Add user to your forum ignore list Reply with quote

XML ti nije dobar za početak, njime barataš kad si advanced i kad poznaješ DOM.

Do tada, jednostavno reci svom serveru da ti vraća HTML fragmente na XMLHttpRequest pozive. Recimo ovako nešto (PHP):

Code:
<div>
  <h1>Ludnica</h1>
  <ol><?php foreach(array('foo', 'bar') as $item): ?>
    <li><?php echo $item ?>
  <?php endforeach ?></ol>
</div>


Znači to je neki na serveru dinamički generiran fragment HTML-a. Kul. Sad ga možeš zatražiti s Ajaxom i ubaciti cijeli taj fragment u tvoje stablo. Pogledaj prvi pastie koji sam ti poslao: samo zamijeni funkciju ovom:

Code:
function success(transport) {
  content.innerHTML = transport.responseText;
}


I to je to. Ne može biti lakše, a luđački je efektivno.

Ne ide ti toliko loše, samo ne smiješ odustati samo zato što ti tu i tamo nešto nije jasno. Idi jednostavno, malo po malo, i kloni se teških stvari. Sva ova gomila koda što sam ti poslao će ti sigurno pomoći ako ga pažljivo proučiš.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
gilgamesh_-



Joined: 02 Sep 2007
Posts: 4

PostPosted: 07.09.2007 15:22    Post subject: Add user to your forum ignore list Reply with quote

Moze, hvala na savjetima. Znace puno vise kad dolaze od iskusnijeg programera.
Sad bar znam gdje se obratit ako bude problema Wink
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Client-side All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group