Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    3

    Caricare Contenuti Xml Con Ajax

    Ciao a tutti. Sto cercando di imparare a usare ajax. Creando il mio sito mi sono trovato di fronte a questo problema: vorrei caricare dei contenuti da un database xml al div della mia pagina principale in maniera dinamica (quando l'utente clicca su una voce del menu). Mi sembrava di aver capito che la soluzione ottimale fosse quella che utilizza ajax, ma al momento di caricare il contenuto lo script carica solo l'html semplice senza accedere al file xml.
    Questa è la pagina che vorrei caricare:

    <html>
    <head>
    <script type="text/javascript" src="loadXMLDoc.js"></script>
    </head>
    <body>
    <h2>Titolo</h2>
    <script type="text/javascript">
    xmlDoc=loadXMLDoc("database.xml");
    x=xmlDoc.getElementsByTagName("riassunto")[0];
    document.write(x.childNodes[0].nodeValue);
    </script>
    </body>
    </html>

    il risulatato è una pagina vuota con scritto "Titolo".
    Lo script che uso è:


    var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
    var loadedobjects=""
    var rootdomain="http://"+window.location.hostname
    var bustcacheparameter=""

    function ajaxpage(url, containerid){
    var page_request = false
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
    page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
    try {
    page_request = new ActiveXObject("Msxml2.XMLHTTP")
    }
    catch (e){
    try{
    page_request = new ActiveXObject("Microsoft.XMLHTTP")
    }
    catch (e){}
    }
    }
    else
    return false
    page_request.onreadystatechange=function(){
    loadpage(page_request, containerid)
    }
    if (bustcachevar) //if bust caching of external page
    bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
    page_request.open('GET', url+bustcacheparameter, true)
    page_request.send(null)
    }

    function loadpage(page_request, containerid){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    document.getElementById(containerid).innerHTML=pag e_request.responseText
    }

    function loadobjs(){
    if (!document.getElementById)
    return
    for (i=0; i<arguments.length; i++){
    var file=arguments[i]
    var fileref=""
    if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
    if (file.indexOf(".js")!=-1){ //If object is a js file
    fileref=document.createElement('script')
    fileref.setAttribute("type","text/javascript");
    fileref.setAttribute("src", file);
    }
    else if (file.indexOf(".css")!=-1){ //If object is a css file
    fileref=document.createElement("link")
    fileref.setAttribute("rel", "stylesheet");
    fileref.setAttribute("type", "text/css");
    fileref.setAttribute("href", file);
    }
    }
    if (fileref!="xml/.."){
    document.getElementsByTagName("head").item(0).appe ndChild(fileref)
    loadedobjects+=file+" " //Remember this object as being already added to page
    }
    }
    }

    dopodiche chiamo la pagina nel seguente modo:
    [*]01

    Secondo voi qual'è il problema?
    Grazie anticipatamente

  2. #2
    Ciao,
    anzicchè provare a caricare una pagina che poi avvia una chiamata Ajax,
    prova ad aggiungere nel DIV direttamente il risultato della chiamata AJAX.

    Che senso ha fare una chiamata ajax per aggiungere una intera pagina, che tra l'altro deve anche caricarsi da se?

    Con ajax viene comodo aggiungere direttamente la parte di codice HTML (o DOM) che ti serve.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.