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

    richiesta ajax "impazzita"

    Ciao a tutti,
    Mi sto dando da fare per imparare e già riesco a combinare e capire qualcosina di php/js(ajax,json), ma mi rendo conto che ho ancora tanta strada da percorrere e problemi grandi e meno grandi da affrontare, questo che sto per illustravi ad esempio non so manco come classificarlo, fatto delle ricerche generiche ma non sapevo nemmeno cosa scrivere nel titolo.

    Vorrei che il risultato della richiesta ajax comparisse dentro un div nella pagina index, ma nonostante il corretto funzionamento del form se aperto singolarmente, una volta che lo richiamo dal link il form non funziona e mi ritorna il "POST" sulla barra d'indirizzo come fosse stato inviato tramite "GET".

    Questa "applicazione" dovrebbe cambiare colore allo sfondo dipendendo della scelta impostata, questo è un mero esempio, vorrei che dall'inizio alla fine il tutto si concentrasse sul un div senza cambiare pagina (index.php).

    Ho cercato di riprodurre il problema in un modo semplice. Spero di aver reso l'idea.


    Ora il codice:

    index.php
    Codice PHP:
    <?php ?> <html> <head> <title>index</title> </head> <body> <div id='result0'> <?php include ('navig.html'); ?> </div> </body> </html>
    navig.html
    codice:
    <html> <head> <title>navigbar</title> <script> function GetXMLHttp() { if(navigator.appName == "Microsoft Internet Explorer") { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { xmlHttp = new XMLHttpRequest(); } return xmlHttp; } var xmlRequest = GetXMLHttp(); function aprePag(valore){ var url = valore; xmlRequest.open("GET",url,true); xmlRequest.onreadystatechange = cambiaStato; xmlRequest.send(null); if (xmlRequest.readyState == 1) { document.getElementById("result0").innerHTML = "caricando..."; } return url; } function cambiaStato(){ if (xmlRequest.readyState == 4){ document.getElementById("result0").innerHTML = xmlRequest.responseText; } } </script> </head> <body> <div id='result1'> <h3>Clicca per accedere al form</h3> </div> </body> </html>
    form.html
    codice:
    <html> <head> <title>Form_test</title> <Script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></Script> <script > $(document).ready(function() { $("#form_id").submit(function(){ var querystring = $(this).serializeArray(); $.post("colore.php", querystring, function(data) { $('#result2').html(data); //alert(data); }); return false; }); }); </script> </head> <body> <div id="result2"> <form action="#" id="form_id" accept-charset='UTF-8'> <div><input type='radio' name='colore' id='RadioGroup1_radio_0' value='red'/><label>Rosso</label></div> <div><input type='radio' name='colore' id='RadioGroup1_radio_1' value='green'/><label>Verde</label></div> <h4>Scegli un colore e una tonalita</h4> <div><input type='radio' name='tono' id='RadioGroup2_radio_0' value='molto'/><label>Scuro</label></div> <div><input type='radio' name='tono' id='RadioGroup2_radio_1' value='poco'/><label>Chiaro</label></div> <input type='submit' name='submit' value="invia"/> </form> </div> </body> </html>
    colore.php
    Codice PHP:
    <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <script> </script> <title>test_post</title> </head> <body> <?php $colore $_POST["colore"]; $tono $_POST["tono"]; if (($colore == 'red') AND ($tono == 'poco')) { $back "#FF8888";} elseif ($colore == 'red' AND $tono == 'molto') { $back "#F00000";} if ($colore == 'green' AND $tono == 'poco') { $back "#B7FFB7";} elseif ($colore == 'green' AND $tono == 'molto'){ $back "#006C00";} ?> <div style="background-color:<?php echo $back?>; color:yellow; text-align:center"><h1>TEST COLORE</h1></div> </body> </html>
    Grazie per l'attenzione.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao
    A) Cerca di non postare codice php che non tutti conoscono e confonde
    B) Non postare codice tutto su una riga diventa illeggibile
    Per il tuo problema forse è legato all'evento submit del forum event.preventDefault() la bibbia per jquery
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Grazie per la risposta.

    Per il codice php, pensavo di aver fatto la cosa giusta riproducendo il problema nella sua interezza, davo per scontato che tutti qui il php lo conoscesse.
    Ho usato i pulsanti per inserire il codice, non so come mai è uscito su una riga, non ho cambiato perché credevo fosse indifferente a chi volesse riprodurre il problema in local.
    Scusate il disturbo.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da zoombee
    Grazie per la risposta.

    Per il codice php, pensavo di aver fatto la cosa giusta riproducendo il problema nella sua interezza, davo per scontato che tutti qui il php lo conoscesse.
    Come già detto il php confonde, se c'è un errore non lo capisci perché qui ci si focalizza su js e il php lo si esclude, a livello di client che sia php/asp/jsp/pizze e fichi al browser non importa visto che interpreta solo html, quando chiedi aiuto su di un form non dare mai nulla per scontato
    Ho usato i pulsanti per inserire il codice, non so come mai è uscito su una riga, non ho cambiato perché credevo fosse indifferente a chi volesse riprodurre il problema in local.
    Perché probabilmente e scritto in origine su di una riga sola (problema che si riscontra quando il codice e scritto lato server) e difficilmente si copia/incolla il codice per riprodurre tutto in locale per diversi motivi tempo, voglia, impossibilità (il codice php non è sempre riproducibile e darrebbe errori) e i consigli/aiuti si danno preventemente online (per queso spesso si chiede pagine demo online per eseguire test o prove)
    Scusate il disturbo.
    Nessun disturbo, sono solo consigli per l'uso.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Rieccomi qua. Scusate se insisto. Ho cercato di implementare quanto raccomandato da cavicchiandrea con
    codice:
    event.preventDefault();
    ma è servito a niente per il problema specifico.

    In pratica vorrei che il risultato di un form fosse indirizzato ad un div che si trova sulla prima pagina nella quale tramite un link richiamo il suddetto form, ma forse essendo lo script presente sulla pagina nella quale si trova il form non riesce quindi a "vedere" il div sul quale deve stampare il risultato:
    codice:
    $(document).ready(function() {
    $("#form_id").submit(function(){
        var querystring = $(this).serializeArray();
        //$('#result').html(querystring);
    $.post("colore.php", querystring,  
        function(data) {
            $('#result2').html(data);
              //alert(data);
        });
          return false;
                     });
                     });
    Ho messo online per facilitare a chi avesse voglia e/o tempo da dedicarsi.

    link prima pagina: Il link richiama il form ma non riesce a completare il caricamento del risultato.
    link del form: Se si accede direttamente al form il risultato viene caricato sullo stesso div dove si trova il form, ma invece vorrei che andasse in prima pagina.

    Ho nominato i div "risult0" e "risult2" il risult0 sarebbe quello dove vorrei che si caricasse, cioè, quello sulla prima pagina mentre l'altro è quello sulla pagina del form nella quale il risultato viene stampato, se cambio il div sullo script non succede niente.

    Ovviamente, il problema è ancora purtroppo la mia incapacità, ma se non lo fosse non sarei qui a chiedere a qualcuno che gentilmente mi aiutasse almeno a capire qualcosa in più.

    Aiutateci, anche altri potranno in futuro dover affrontare lo stesso problema.
    Intanto continuo ad studiare.
    Ringrazio in anticipo qualsiasi lampo di luce.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    nella prima pagina inserisci questo 2 righe di codice jquery:

    codice:
    $(document).ready(function() {
    	$("#HyperLink").click(function(){
    		$("#result0").load("form.html");
    	});
    });
    al posto della chiamata ajax in js nativo... elimina anche l'evento onclick

    nella pagina del form togli il document.ready e lascia intatto il resto.

  7. #7
    Ciao Vindav,
    Fantastico!
    Tutto quello che ci si aspetta di un forum.
    A volta noi "novelli" veniamo fraintesi, cioè, non è che uno si vuole il codice bello pronto, ma a volte ci troviamo in una situazione di stallo dove non si può andare avanti prima di superare un' intoppo per poi proseguire con l'apprendimento.
    Grazie Vindav e anche a cavicchiandrea.

    Prima
    Dopo

    PS. Non ho cambiato niente alla pagina del form perché l'evento "onclick" non era presente, soltanto aggiunte quelle due righe alla pagina index dove volevo che andasse a finire il risultato, e potete comprovare dai link la riuscita.

    Ancora molto grato!

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Sarà come dici tu ma finché scriverai questo codice qui:
    codice:
    <html><--- :spy: 
    <head><--- :spy: 
    	<title>index</title>
    				<Script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></Script>
    		</head>
    <script>
    	
    		$(document).ready(function() {
    	$("#HyperLink").click(function(){
    		$("#result0").load("form.html");
    	});
    });
    </script>
    <body><--- :spy: 
    	<div id='result0'>
    	<html><--- :spy: 
    
    <head><--- :spy: 
    	<title>navigbar</title>
    <script>
    	function GetXMLHttp() {
    if(navigator.appName == "Microsoft Internet Explorer") {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
    xmlHttp = new XMLHttpRequest();
    }
    return xmlHttp;
    }
    var xmlRequest = GetXMLHttp();
    function aprePag(valore){
    var url = valore;
    xmlRequest.open("GET",url,true);
    xmlRequest.onreadystatechange = cambiaStato;
    xmlRequest.send(null);
    if (xmlRequest.readyState == 1) {
    document.getElementById("result0").innerHTML = "caricando...";
    }
    return url;
    }
    function cambiaStato(){
    if (xmlRequest.readyState == 4){
    document.getElementById("result0").innerHTML = xmlRequest.responseText;
    }
    }
    </script>
    </head>
    
    <body><--- :spy: 
    	<div id='result1'>
    	<h3>clicca form</h3>
    	</div>
    </body>
    
    </html>
    	</div>
    </body>
    </html>javascript:void(0);
    secondo me avrai sempre grossi problemi
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Ciao cavicchiandrea,

    Grazie per l'osservazione, ma voglio precisare che non sono stato io ad scriverlo in quel modo, cioè, lo scritto ma non l'ho messo tutto dentro un frullatore come sembra, lo scritto ordinadamente, credo ogni cosa a suo posto, ma no so come mai quando su chrome faccio il "view page source" venga fuori quella roba.

    Qui in locale ho per quello esempio 4 pagine ognuna su una scheda distinta:
    index.php
    navig.html
    form.html
    colore.php

    Forse è il browser che fa quel lavoro li. Comunque come puoi notare dal link il tutto funziona normalmente.

    Per adesso sto nella fase del codice "frankenstein" ne prendo un pezzo qui e un'altro la e scrivo qualcosina in mezzo per avere il prodotto finito, spero in breve essere in grado di scrivere tutto da zero e sicuramente anche grazie alla tua osservazione starò più attento per mantenere il codice pulito e ordinato.

    Originariamente inviato da Vindav
    al posto della chiamata ajax in js nativo... elimina anche l'evento onclick
    Ho capito che l'evento onclick si trova nella chiamata ajax su navig.html ma avevo lasciato a suo posto e ha funzionato ugualmente, farò comunque ulteriori test prima di passare il tutto per il progetto principale (la creatura).

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ho visto ora la pagina modificata, tutta la parte javascript che c'era prima(la chiamata ajax in js nativo) ora è completamente inutile puoi/devi levarla se non vuoi codice in pagina che non serve a nulla, l'unica parte necessaria è quella che ti ho postato... poi vedi te l'importante è che funzioni


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.