Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [AJAX] problemi con funzioni e redirect

    Buon giorno a tutti, premetto, sto utilizzando ajax per richiamare le pagine all'interno del sito.
    Ci sono delle situazioni per cui debbo utilizzare il redirect.

    codice:
    //link normale
    News
    
    //redirect
    header("Refresh: 5;URL=?p=news");
    Facendo in questo modo però, non richiamo la pagina con la modalità asincrona...
    Quindi, vi chiedo cortesemente, come faccio ad utilizzare il redirect con AJAX?

    Poi, come mi comporto con le funzioni che richiamano altre pagine?
    codice:
    function subEliminaImg() {
    	if (!confirm("Sicuro di volere Eliminare?")) return;
    	subPreSubmit();
    	document.frmPopUp.bEliminaimg.value=1;
    	document.frmPopUp.action="?p=in_news";
    	document.frmPopUp.submit();
    }
    In modalità asincrona come si comporta l'action?

    Grazie mille e buona giornata.

  2. #2
    beh, l'unico modo in cui puoi usare il redirect con AJAX è mettere il comando window.location.href = "altro-url.html" nella funzione associata all'evento success della richiesta AJAX.
    I DON'T Double Click!

  3. #3
    cioè?Non è che ho capito...scusami, ma ancora non so muovermi...
    Comunque questa è la funzione che utilizzo:
    codice:
    // ==========================================================================			 
    // @function		Complete AHAH function
    // @author		Daniele Florio
    // @site		www.gizax.it
    // @version		1.1.3 experimental
    
    // @thanksTo		Andrea Paiola,Walter Wlodarski,Scott Chapman
    
    // @updated 1.1.3 ( execJS function ) @thanks to Giovanni Zona
    
    // (c) 2006 Daniele Florio <daniele@gizax.it>
    
    // ==========================================================================
    
    
    var completeAHAH = {
    
    	loading : 'loading data...',
    
    	ahah : function (url, target, delay, method, parameters) {
    
    	  if ( ( method == undefined ) || ( method == "GET" ) || ( method == "get" ) ){
    			
    			this.creaDIV(target, this.loading);
    			
    			if (window.XMLHttpRequest) {
    				req = new XMLHttpRequest();
    			} 
    			else if (window.ActiveXObject) {
    				req = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			if (req) {
    				req.onreadystatechange = function() {
    					completeAHAH.ahahDone(url, target, delay, method, parameters);
    				};
    				req.open(method, url, true);
    				req.send("");
    			}
    		}
    		if ( (method == "POST") || (method == "post") ){
    
    			this.creaDIV(target, this.loading);
    
    			if (window.XMLHttpRequest) {
    				req = new XMLHttpRequest();
    			} 
    			else if (window.ActiveXObject) {
    				req = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			if (req) {
    				req.onreadystatechange = function() {
    					completeAHAH.ahahDone(url, target, delay, method, parameters);
    				};
    				req.open(method, url, true);
    				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    				req.send(parameters);
    			 }
    		}
    	},
    	
    	creaDIV : function (target, html){
    
    	   if (document.body.innerHTML){
    			   document.getElementById(target).innerHTML = html;
    	   }
    	   else if (document.getElementById){
    			   var element = document.getElementById(target);
    			   var range = document.createRange();
    
    			   range.selectNodeContents(element);
    			   range.deleteContents();
    			   element.appendChild(range.createContextualFragment(html));
    
    	   }
    	},
    
    	execJS : function (node) {
    
    		var st = node.getElementsByTagName('SCRIPT');
    		var strExec;
    
    		var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
    		var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
    		var bMoz = (navigator.appName == 'Netscape');
    
    		for(var i=0;i<st.length; i++) {     
    			if (bSaf) {
    			  strExec = st[i].innerHTML;
    			}
    			else if (bOpera) {
    			  strExec = st[i].text;
    			}
    			else if (bMoz) {
    			  strExec = st[i].textContent;
    			}
    			else {
    			  strExec = st[i].text;
    			}
    			try {
    			  eval(strExec);
    			} catch(e) {
    			  alert(e);
    			}
    		}
    
    	},	
    
    	ahahDone : function (url, target, delay, method, parameters) {		
    		if (req.readyState == 4) { 
    			element = document.getElementById(target);
    			if (req.status == 200) {
    
    				//this.creaDIV(target, req.responseText);
    				output = req.responseText;
    				document.getElementById(target).innerHTML = output;
    				var j = document.createElement("div");
    				j.innerHTML = "_" + output + "_";
    				this.execJS(j);
    
    			} 		
    			else {
    				this.creaDIV(target, "ahah error:\n"+req.statusText);
    			}
    		}
    	},
    
    	/*
    
    	@@ parameters : 
    	fileName	= name of your cgi or other
    	method		= GET or POST, default is GET
    	formName	= name of your form
    	dynamicTarget	= name of your dynamic Target DIV or other
    
    	@@ usage : 
    	<form id="formName" action="javascript:completeAHAH.likeSubmit('fileName', 'method', 'formName', 'dynamicTarget');">
    
    	*/
    
    	likeSubmit : function ( file, method, formName, target ) {
    
    		var the_form = document.getElementById(formName);
    		var num = the_form.elements.length;
    		var url = "?";
    		var radio_buttons = new Array();
    		var nome_buttons = new Array();
    		var check_buttons = new Array();
    		var nome_buttons = new Array();
    
    
    		// submit radio values
    		var j = 0;
    		var a = 0;
    		for(var i=0; i<the_form.length; i++){
    			var temp = the_form.elements[i].type;
    			if ( (temp == "radio") && ( the_form.elements[i].checked) ) { 
    				nome_buttons[a] = the_form.elements[i].name;
    				radio_buttons[j] = the_form.elements[i].value; 
    				j++; 
    				a++;
    			}
    		}
    		for(var k = 0; k < radio_buttons.length; k++) {
    			url += nome_buttons[k] + "=" + radio_buttons[k] + "&";
    		}
    
    		// submit checkbox values
    		var j = 0;
    		var a = 0;
    		for(var i=0; i<the_form.length; i++){
    			var temp = the_form.elements[i].type;
    			if ( (temp == "checkbox") && ( the_form.elements[i].checked) ) { 
    				nome_buttons[a] = the_form.elements[i].name;
    				check_buttons[j] = the_form.elements[i].value; 
    				j++; 
    				a++;
    			}
    		}
    		for(var k = 0; k < check_buttons.length; k++) {
    			url += nome_buttons[k] + "=" + check_buttons[k] + "&";
    		}
    
    		// submit all kind of input		
    		for (var i = 0; i < num; i++){	
    			var chiave = the_form.elements[i].name;
    			var valore = the_form.elements[i].value;
    			var tipo = the_form.elements[i].type;
    
    			if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") ){}
    			else {
    				url += chiave + "=" + valore + "&";
    			}
    		}
    
    		var parameters = url;
    		url = file + "?" + url;
    
    		if (method == undefined) { 
    			method = "GET"; 	
    		}
    		if (method == "GET") { 
    			this.ahah(url, target, '', method, ''); 
    		}
    		else { 
    			this.ahah(file, target, '', method, parameters); 
    		}
    	}
    
    };
    Al momento il uo utilizzo è solo per richiamare le pagine attraverso i link in questo modo:
    codice:
    //link normale
    News
    Ti chiedo:Con questo script quali altri utilizzi e/o vantaggi ne posso trarre?
    Nel senso, per inviare dati da un form, come si fà?

    Poi un'altra cosa: non riesco a mantenere attiva la pagina che sto visualizzando se clicco sul refresh.
    Es: sto visualizzando la pagina chi_siamo.php clicco sul refresh, praticamente invece di ridarmi la chi_siamo.php, mi ritorna alla pagina di apertura del sito e cioè la home.php

    Ho dato un'occhiata allo script jQuery.History.js, ma...con questo script sembra vada in conflitto...
    Quindi altra domanda: come posso, in un'unico script richiamare le pagine e mantenerle attive allo stesso tempo?

    Per il momento mi fermo, ringraziandoti e ringraziando come sempre tutti voi.
    Buona serata....

  4. #4
    Con questo script quali altri utilizzi e/o vantaggi ne posso trarre?
    Nel senso, per inviare dati da un form, come si fà?
    Beh, potresti anche leggere i commenti alle funzioni, sopra la definizione di likeSubmit c'è un esempio su come fare il submit AJAX di una form.

    Poi un'altra cosa: non riesco a mantenere attiva la pagina che sto visualizzando se clicco sul refresh.
    Es: sto visualizzando la pagina chi_siamo.php clicco sul refresh, praticamente invece di ridarmi la chi_siamo.php, mi ritorna alla pagina di apertura del sito e cioè la home.php
    Questo è ovvio: quando ricarichi la pagina rilanci tutto dall'inizio, anche il javascript. Hai due soluzioni: quando apri una pagina, ne salvi il nome in un Cookie e, al caricamento della pagina, se c'è il Cookie impostato apri la pagina corrispondente; altrimenti, fai come fa GMail, mettendo come anchor all'url la sezione, o pagina, da visualizzare, cioé, quando guardi la pagina chi_siamo.php, agginugi all'url della pagina "#chi_siamo", poi al caricamento della pagina, controlli se l'url ha qualcosa dopo il # ed apri la pagina corrispondente tramite AJAX.

    Ho dato un'occhiata allo script jQuery.History.js, ma...con questo script sembra vada in conflitto...
    Quindi altra domanda: come posso, in un'unico script richiamare le pagine e mantenerle attive allo stesso tempo?
    Come sopra.
    I DON'T Double Click!

  5. #5
    Non, so forse i cookie, con la struttura che ho in questo modo:
    codice:
    //nella pagina controlli.php
    if($_GET['p']=="home"){
    include('home.php');
    }
    elseif($_GET['p']=="chi_siamo"){
    include('ChiSiamo/chiSiamo.php');
    }
    else{
    include('home.php');
    }
    come puoi notare per richiamare le pagine invio un valore in questo modo:
    codice:
    //link normale
    News
    
    //p=news
    il valore della p in questo caso news, mi andrà a richiamare la pagina news.php
    Ora quello che voglio capire è come, intercettare un valore dopo l'hash # che si trova nell'href...come in questo esempio:
    codice:
    //esempio pulito che richiama la pagina chi_siamo 
    load 2
    Ho fatto caso che al click su questo link, nella barra degli indirizzi dopo l'hash # è visibile ChiSiamo/chi_siamo.
    Ora, vorrei sapere cortesemente come si fà ad intercettare quel valore.
    grazie mille :_D

    Buona giornata.

  6. #6
    Originariamente inviato da artorius

    Hai due soluzioni:
    1) quando apri una pagina, ne salvi il nome in un Cookie e, al caricamento della pagina, se c'è il Cookie impostato apri la pagina corrispondente;
    2) altrimenti, fai come fa GMail, mettendo come anchor all'url la sezione, o pagina, da visualizzare, cioé, quando guardi la pagina chi_siamo.php, agginugi all'url della pagina "#chi_siamo", poi al caricamento della pagina, controlli se l'url ha qualcosa dopo il # ed apri la pagina corrispondente tramite AJAX.
    Domanda: come faccio a controllare l'url per vedere se dopo l'hash c'è qualcosa?
    grazie mille...

  7. #7
    codice:
    var tmp = window.location.href.split("#");
    if(tmp[1]){
       //C'è qualcosa dopo il #
       var dopoHash = tmp[1];
       //Facci quello che vuoi
    }
    I DON'T Double Click!

  8. #8
    buon giorno...
    all'interno della tua funzioncina ho inserito un alert per vedere se al refresh della pagina mi intercetta il valore dopo l'hash, fin qui funziona tutto..
    Ora quello che vorrei sapere è come, collegare javascript a php, insomma il valore restituito dalla variabile dopoHash la vorrei passare a php $dopohash, ma non so come fare...

    mi sto documentando...ma, non trovo nulla che faccia la caso mio...
    sai come si fà?
    grazie mille ancora

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da ANTAGONIA
    Ora quello che vorrei sapere è come, collegare javascript a php, insomma il valore restituito dalla variabile dopoHash la vorrei passare a php $dopohash, ma non so come fare...
    O richiedi una nuova pagina passando un parametro, o ne richiedi una porzione utilizzando ajax, tutto dipende da cosa se ne fa il php di quel valore.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    praticamente ho risolto alla grandissima cosi:
    codice:
    //link del menu.php
    Chi siamo
    
    //script in index.php
    function pageload(hash) {
    		 //alert("pageload: " + hash);
    		// hash doesn't contain the first # character.
    		if(hash) {
    			// restore ajax loaded state
    			if(jQuery.browser.msie) {
    				hash = encodeURIComponent(hash);
    			}
    			jQuery("#load").load("controlli.php?p=" + hash);
    		} else {
    			// start page
    			jQuery("#load").empty();
    		}
    	}
    $(document).ready(function(){
    jQuery.historyInit(pageload, "home.php");
    jQuery("a[rel='history']").click(function(){
    			var hash = this.href;
    			hash = hash.replace(/^.*#/, '');
    jQuery.historyLoad(hash);
    			return false;
    		});
    	});
    
    
    
    //nella stessa index.php
    visualizzo le pagine cosi
    <div id="load"></div>
    In questa porzione di script è racchiusa la chiave di (s)volta:
    codice:
    jQuery("#load").load("controlli.php?p=" + hash);
    Però, c'è un'altro problema, vorrei sapere per favore se, attraverso questo script, è possibile all'apertura del sito richiamare una pagina specifica, che poi non viene più richiamata o ricaricata se faccio il refresh del sito...

    Spero di essermi spiegato.
    grazie ancora

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.