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

    Prova con ajax non funziona

    Premetto che sono alle prime armi e conosco le basi di javascript e qualcosa di php.
    Trovandomi in necessità di eseguire del codice php su richiesta dell'utente, alla pressione di un pulsante, ho scoperto ajax. Ho fatto qualche prova, ma mi sono bloccato su questo codice, presumo banale, che non riesco a far funzionare:

    codice:
    function assegnaXMLHttpRequest() {
    	var
    		XHR = null,
    		browserUtente = navigator.userAgent.toUpperCase();
    	if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) ===
    "object")
    		XHR = new XMLHttpRequest();
    	else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
    		if(browserUtente.indexOf("MSIE 5") < 0)
    			XHR = new ActiveXObject("Msxml2.XMLHTTP");
    		else
    			XHR = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	return XHR;
    };
    	
    
    	function invia() {
    	alert('invia');
    	
    	ajax = assegnaXMLHttpRequest();
    	if(ajax) {
    		alert('ajax');
    		document.getElementById("stato").innerHTML = "Operazione in corso...";
    		dati = form1.testo.value;
    		ajax.open("POST", "http://localhost/ajax2.php", false);
    		alert('ajax open');
    		ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    		ajax.send(dati);
    		alert('ajax send');
    		ajax.onreadystatechange = function() {
    			if(ajax.readyState === 4) {
    				alert('4');
    				if(ajax.status==200){
    					alert(ajax.responseText);
    					document.getElementById('stato').innerHTML = ajax.responseText;
    				}
    				else{
    				alert('Non funziona!');
    				}
    			}
    			else {
    			alert(ajax.readyState);
    			}
    		}
    	}
    }
    codice:
    <body>
    <form id="form1">
    <input type="text" id="testo" value="2500k" >
    
    <input type="button" onclick="invia();" value="Invia" id="pulsante">
    
    <input type="text" id="risposta" value="" disabled="true">
    
    <input type="text" id="stato" value="" disabled="true">
    </form>
    </body>
    ajax2.php:
    Codice PHP:
    <?php
    $dati
    =$_POST;
    echo 
    "Ciao!";
    echo 
    $dati;
    ?>
    Eseguendolo gli alert arrivano fino a 'ajax send', poi non succede nulla.
    E anche l'istruzione
    codice:
    document.getElementById("stato").innerHTML = "Operazione in corso...";
    sembra non funzionare.
    Dove sbaglio?

    Grazie a chi saprà darmi una mano

    edit: scusate, ora fondamentalmente funziona
    Però l'istruzione con innerHTML non va lo stesso. E anche nel php sbaglio a stampare i dati, come dovrei fare?

  2. #2
    Non so cosa sia successo, ma ha smesso di funzionare improvvisamente. Rieseguendo lo stesso codice (per sicurezza l'ho ripreso da qua sopra, identico, che prima andava e ora no) mi dà quest'errore su firefox:

    codice:
    NS_ERROR_FAILURE: Failure
    [Interrompi per questo errore] 	
    
    ajax.send(dati);
    e su chrome:
    codice:
    XMLHttpRequest cannot load http://localhost/ajax2.php. Origin null is not allowed by Access-Control-Allow-Origin. ajax3.html:33
    Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
    Pare da quello che ho trovato che lo dovrebbe dare quando non trova lo script php, ma il percorso è giusto, è sempre quello, e anche il browser in quel percorso lo trova..

    intanto ho capito come mai l'innerHtml non andava e come farlo ricevere correttamente allo script, usando ajax.send('dati='+dati) e poi $dati=$_POST['dati'] .
    L'unica cosa che anche mentre "andava" non avevo ancora capito era come mai non entrasse in "ajax.onreadystatechange = function() {" e di conseguenza non mi dasse l'alert e la risposta..

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.