Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    caricare javascript all'intenro di un div con ajax

    Eccoci ancora qua con ajax..

    Ho costruito una pagina php + javascipt che mi permette di caricare il contenuto di un'altra pagina in un div della stessa. In altre parole:

    - prova.php contiene <div id=content></div> e un pulsante che attiva la funzione ajax
    - cliccando sul pulsante la funzione carica la pagina prova.php?action=execute
    - il risultato della chiamata viene inserito nel div "content"

    Fino a qua è tutto ok. Il problema si presenta quando nel codice da inserire nel div è presente javascript. In firefox tutto ok, ma in internet explorer sembra che la stringa <script....../script> non venga interpretata....

    ho fatto un test mantenendo solo le righe essenziali:
    http://www.adeline.it/prova.php

    Ho cercato in rete, ma sembra che nessuno abbia mai avuto necessità di eseguire script in questo modo.
    Qualcuno sa almeno dove sbaglio? Perchè ie non fa pertire lo script? Sono giorni che non mi do pace...
    Spero possiate essermi di aiuto

    il codice è questo:


    codice:
    <?php
    $string="";
    if (isset($_GET['action'])){$action=$_GET['action'];}
    
    
    
    //------------------------------------------------------------------------------
    //questo contenuto viene caricato nel div "content" con la chiamata ajax
    if($action=="execute"){
      $string.="<script type=\"text/javascript\">alert(\"richiesta ok\")</script>";
      $string.="richiesta ok";
      echo($string);
      return;
    }
    //------------------------------------------------------------------------------
    ?>
    
    
    
    
    
    <html>
    <head>
    
    <script type="text/javascript">
    
    
    // Apre una pagina in un div specifico
    // @url: indirizzo della pagina
    // @containerid: div di destinazione
    // @addstring: stringa aggiuntiva da aggiungere all'html
    function ajaxpage(url, containerid, addstring){
    	var pat=/\?/;
    	var spat=url.search(pat);
    	if(spat!=-1){url+="&dummy="+new Date().getTime();}
    	else{url+="?dummy="+new Date().getTime();}
    	var page_request = false;
    	page_request=getXMLHttp();
    	page_request.open('GET', url, true);
    	page_request.onreadystatechange= function() {
        loadpage(page_request, containerid, addstring);
      }
    	page_request.send(null);
    }
    
    //carica l'html nel div
    //@page_request: html da visualizzare
    //@containerid: div di destinazione
    //@addstring: stringa aggiuntiva da aggiungere all'html
    function loadpage(page_request, containerid, addstring){
    	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
      		var olddiv = document.getElementById(containerid);
      		var d = olddiv.parentNode;
      		d.removeChild(olddiv);
      		var newdiv = document.createElement('div');
      		newdiv.setAttribute('id',containerid);
    		if(addstring){
    			newdiv.innerHTML=page_request.responseText+addstring;
    		}
    		else{
    		alert("stringa inserita nel DIV: "+page_request.responseText);
    		 	newdiv.innerHTML=page_request.responseText;
    		}
    		d.appendChild(newdiv);
    	}
    }
    
    //classe xmlhhtp per interazioni ajax
    function getXMLHttp() {
    	var xmlhttp = null;
    	if (window.ActiveXObject) {
      		if (navigator.userAgent.toLowerCase().indexOf("msie 5") != -1) {
      			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      		} else {
        	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      	}
    	}
    	if (!xmlhttp && typeof(XMLHttpRequest) != 'undefined') {
      		xmlhttp = new XMLHttpRequest()
    	}
    	return xmlhttp
    }
    </script>
    </head>
    <body>
    
    
    
    
    
    <?php
    $string.="Esperimento per l'inserimento di contenuto in un DIV con l'uso di ajax.
    
              Premendo 'clicca' la funzione ajaxpage rilegge la pagina prova.php (con parametro action=execute) e riporta il risultato nel div 'content'.
    
              Per un motivo che non mi so spiegare in internet explore non viene riconosciuta la parte di stringa contenente lo script javascript.
    
              Per facilitare il debug ho inserito un alert che propone la stringa restituita al div dalla funzione javascript
    
    
    
    ";
    $string.="<div><div id='content'></div></div>";
    $string.="<a href=\"javascript:ajaxpage('prova.php?action=execute', 'content')\">Clicca</a>";
    echo($string);
    ?>
    
    
    
    
    
    </body>
    </html>

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Pietro

  3. #3
    wow!!! che velocità.. e funziona perfettamente!!

    Scusate, ma devo aver perso quel 3d

    Se ho capito bene fai uno strip dei tag <script> e li sostituisci creando un elemento script.. ma non torni al punto di partenza????

    O si tratta solo di inserire lo script nell'head?

    Comunque grazie!!

  4. #4

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ad essere buoni, stiamo ai limiti dello spam

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.