Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    1

    Problema nel passaggio di variabili da JAVASCRIPT a PHP

    Vorrei chiamare una funzione PHP con il click di un bottone HTML e ho letto che il modo migliore è utilizzare AJAX.
    Vorrei passare un paio di variabili dalla funzione AJAX a quella PHP e quindi ho letto che devo utilizzare XMLhttprequest.send() ma non riesco nel mio intento.

    Il codice è il seguente.

    codice HTML:
    <input type="button" value="Elimina" class="btn_elimina" onClick="removeAndReplace(1, 'Shopping')">
    JAVASCRIPT

    codice:
    function removeAndReplace(id, sezione){	var xhttp = new XMLHttpRequest();
    	
    	xhttp.onreadystatechange = function() {
    		if (xhttp.readyState == 4 && xhttp.status == 200) {
    			alert(xhttp.responseText);
    		}
    	}
    	
    	xhttp.open("POST", "removeAndReplace.php", true);
    	xhttp.send("id=" + id + "&sezione=" + sezione);
    
    }


    Codice PHP:
    print_r($_POST);$id $_POST['id'];$sezione $_POST['sezione'];
    etc.. 
    I browser, in questo caso Firefox e Chrome, mi restituiscono i seguenti avvisi che poi chiaramente provocano errori nel codice seguente.

    Array ( )
    Notice: Undefined index: id in C:\pweb\tools\xampp\htdocs\Bazaar\php\removeAndRep lace.php on line 6

    Notice: Undefined index: sezione in C:\pweb\tools\xampp\htdocs\Bazaar\php\removeAndRep lace.php on line 7


    Per la precisione la riga 6 è $id = $_POST['id']; e la 7 è $sezione = $_POST['sezione'];

    Qualcuno sa dirmi dove sto sbagliando?

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,684
    Personalmente utilizzo jQuery e il relativo metodo ajax() che mi semplifica tutto l'ambaradan. Se già usi jQuery ti consiglierei vivamente l'uso di tale metodo.

    Ad ogni modo, sul tuo script prova ad aggiungere un setRequestHeader tra open e send (assicurati che sia lì in mezzo), in questo modo:
    codice:
    xhttp.open("POST", "removeAndReplace.php", true);
    xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhttp.send("id=" + id + "&sezione=" + sezione);
    Non chiedermi perché dovrebbe funzionare e a cosa serve, l'ho visto dire qui
    https://stackoverflow.com/questions/...mment-11173815

    In effetti ho provato e sembra funzionare.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio

    Ad ogni modo, sul tuo script prova ad aggiungere un setRequestHeader tra open e send (assicurati che sia lì in mezzo), in questo modo:
    codice:
    xhttp.open("POST", "removeAndReplace.php", true);
    xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhttp.send("id=" + id + "&sezione=" + sezione);
    Non chiedermi perché dovrebbe funzionare e a cosa serve, l'ho visto dire qui
    https://stackoverflow.com/questions/...mment-11173815

    In effetti ho provato e sembra funzionare.
    Concordo con te sull'uso di jQuery, aggiungo per pura curiosità che il formato dell'header application/X-www-form-urlencoded serve solo ad indicare che il pacchetto HTTP che si sta mandando contiene dati nel suo body in formato urlencoded è ciò permette di effettuare una get tramite l'array $_POST[] di PHP tutto qui, spero di essere stato utile ed aver aggiunto curiosità alla cosa
    Al mondo, non c'è niente di tanto potente quanto uno script ad hoc...
    Scripting and development, a parallel world.
    La follia è solo l'ingrediente che ti permette di essere geniale...

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.