Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    21

    lettura XML con jquery e PHP restituisce error

    salve...Ho riscontrato un problema nella lettura di un documento XML creato dinamicamente in PHP. XML è ben formato, se lo lancio manualmente dall'url, viene creato in maniera corretta, ma credo ci sia qualcosa che non va nel passaggio con jquery.
    Con FF restituisce l'alert di errore, con IE non fa (apparentemente) nulla.

    Posto il codice ..non riesco a intercettare l'errore, spero possiate darmi qualche indicazione

    script js:
    codice:
    function check_data()
      { 
        //winRes=window.open("../result.php","_blank");
        $(document).ready(function() {
        $("#menu").submit(function(){
        var az = $("#az").attr('value');
        var commessa = $("#comm").attr('value');
        var data_int = $("#d_int").attr('value');
        var opz=$("#opzione").attr('value','interventi_ripetuti');
        $.ajax({
        url: "xml_doc.php?opzione="+opz+"&az="+az+"&comm="+commessa,
        type: "GET",
        dataType: "xml",
        //data: "opzione="+opz,
        success: function(xml) {
            $(xml).find('CODICE').each(function()
            {
            var elem=$(this).text();
            $("#footer").html(elem);
            });
          },
            error: function(request, error, tipo_errore) { alert(error+': '+ tipo_errore); }
        });
      });
      return false;
      });
     }
    xml_doc.php:
    Codice PHP:
    <?php
    $opz
    =$_REQUEST['opzione'];
    switch (
    $opz)
     { case 
    "interventi_ripetuti":
        
        
    $sql="select COD_AREA from aree_intervento where VALIDO='Y'";
        
    $result=mysql_query($sql);
        
    //print ($sql);
        //die();
        
    $i=0;
        
        while(
    $row=mysql_fetch_assoc($result)) {
          
    $tagXml[$i].="<CODICE>".$row['COD_AREA']."</CODICE>";
          
    $i++;
        }
      break;

      
    mysql_close();   
    }
    header("Content-Type: text/xml");
     print(
    "<?xml version='1.0' encoding='iso-8859-1' standalone='yes'?>");
     print(
    "<PRINCIPALE>");
     print(
    "<OPZIONE>");
     print(
    $opz);
     print(
    "</OPZIONE>");
      for(
    $j=1;$j<=$i;$j++)
        {echo 
    $tagXml[$j];}
     print(
    "</PRINCIPALE>");
    ?>
    modulo HTML:
    codice:
    <head>
    <html>
    </head>
      <body id="main" onload="">
        <div id="container">
          <div id="header">
          <h1 title="">Carica Intervento</h1>
          </div> 
          <form id="menu" action="" method="GET"target="">
            <fieldset><legend>Dati della richiesta di intervento</legend>
    
              <label for="az" align="left">Aziendale</label>
    
              <input type="text" id="az" name="az" onblur=""/>
              <label for="comm">Commessa</label>
    
              <input type="text" id="comm" name="comm" />
                <button onclick="check_data()">verifica interventi ripetuti</button>
            <input type="hidden" id="opzione" name="opzione" />
          </form>
      </body>
    </html>
    _libero_arbitrio_

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    la parte html e formattata in malo modo... head prima di html, div che si aprono ma non si chiudono ecc... la parte javascript direi che non ha proprio senso... ti consiglio di riguardarti come funziona jquery. Non capisco come sia possibile che vedi l'alert di errore... forse hai semplicemente sbagliato a copiare il codice sul forum...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    21
    sono tutti errori nel riportare la porzione di codice interessata...i div si chiudono regolarmente e il tag html è al suo posto...
    per la parte javascript, ho ancora qualche difficoltà a passare da javascript tradizionale a jquery e faccio un pò di confusione...
    Sul passaggio dell'url in $.ajax per esempio, avevo provato a passare l'url costruito con i campi necessari alla costruzione del documento xml
    _libero_arbitrio_

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ok, pero ripeto che lo script non ha alcun senso... quindi se è solo un problema di trascrittura posta il codice corretto. Continuo a non capire come hai fatto ad arrivare ad eseguire la chiamata ajax... l'unico motivo è che non stai utilizzando il codice che hai postato quindi per favore posta nuovamente sia l'html che lo script

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    21
    ok, grazie...rimetto il codice per chiarezza... potresti chiarirmi perchè la chiamata jquery ti sembra così insensata?..ho riprovato e con FF l'error lo restituisce...quello che avrei intenzione di fare è di caricare il testo contenuto tra i tag CODICE del documento xml all'interno del div "footer" della pagina html...ho letto e riletto forum, post e blog che spiegano il parse con jquery, nel mio caso sembra non accedere completamente al documento..

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title>Inserisci Intervento</title>
    
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
      
      <script type="text/javascript">
    
      function check_data()
      { $(document).ready(function() {
        $("#menu").submit(function(){
        var az = $("#az").attr('value');
        var commessa = $("#comm").attr('value');
    
        var opz=$("#opzione").attr('value','interventi_ripetuti');
    
        $.ajax({
        url: "xml_doc.php?opzione="+opz+"&az="+az+"&comm="+commessa,
        type: "GET",
        dataType: "xml",
        //data: "opzione="+opz+"&az="+az+"&comm="+commessa+"&d_int="+data_int,
        
    success: function(xml) {
    
             //non è corretto per leggere il testo all'interno del tag CODICE del xml?
             $(xml).find('CODICE').each(function()
            {
            var elem=$(this).text();
            $("#footer").html(elem);
            });
          },
            error: function(request, error, tipo_errore) { alert(error+': '+ tipo_errore); }
        });
      });
      return false;
      });
     }
      </script>
      <link rel="shortcut icon" href="/img/logo.ico">
      </head>
      <body>
          <div id="header">
          <h1 title="">Carica Intervento</h1>
          </div>  
          <form id="menu" name="menu" action="" method="GET"target="">
            <div id="dati_int">
            <button onclick="check_data();">apre nuova finestra con dati per prova</button>
            <fieldset><legend>Dati della richiesta di intervento</legend>
    
              <label for="az" align="left">Aziendale</label>
    
              <input type="text" id="az" name="az" />
              <label for="comm">Commessa</label>
    
              <input type="text" id="comm" name="comm" />
              <label for="d_int">Data Richiesta Intervento (data fax: gg/mm/aaaa)</label>
    
              <input type="text" id="d_int" name="d_int" />
              <input type="hidden" id="opzione" name="opzione" />
              </fieldset>
             </div>
          </form>      
          <div id="footer" name="footer"></div>
      </body>
    </html>
    così è come nel codice originario.
    Grazie
    _libero_arbitrio_

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Riguardati cosa servono queste 2 funzioni:

    ready
    codice:
    $(document).ready(
    submit
    codice:
    $("#menu").submit(
    Come vedrai inseriti cosi all'interno del metodo non hanno alcun senso... quindi puoi toglierli o utilizzarli nel modo corretto... tutto ciò probabilmente non ha a che fare con l'errore della chiamata ajax... ma sinceramente è la prima volta che vedo una cosa del genere e mi ha lasciato alquanto perplesso... come ti ho detto prima, ti conviene approfondire lo studio di jquery perchè hai le idee molto confuse.

    Parlando invece della richiesta ajax ho notato un altro possibile errore:

    codice:
    var opz=$("#opzione").attr('value','interventi_ripetuti');
    Con questa riga di codice tu stai valorizzando il campo hidden, ma questa operazione non valorizzerà la variabile opz con "interventi_ripetuti" ma ti tornerà lo stesso oggetto hidden con l'attributo value modificato. Quindi per accedere al suo valore devi fare cosi:

    codice:
    var opz=$("#opzione").attr('value','interventi_ripetuti').val();
    Fai una prova apportando queste correzioni

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    21
    il modo di riportare i due metodi annidati, ready e submit() l'ho trovato in un blog...
    il submit lo uso perchè alla pagina xml_doc.php vorrei inviare tutti i campi del form in modo da utilizzarli all'occorrenza per le elaborazioni lato server.

    Anche togliendo $(document).ready(), è come se non arrivasse allo stato 4 dell'equivalente readystate...Anche continuando a leggere i tutorial, non capisco come ovviare a tutto il codice js per fare il parse

    sull'uso di val() del campo hidden avevi ragione, ho provato ed effettivamente mi ritornava un oggetto. Grazie
    _libero_arbitrio_

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    E' corretto metterli annidati, ma non all'interno di una funzione che hai definito tu. Inoltre non effettui nessuna submit nella parte html quindi l'uso di quel metodo è errato... soprattutto se definito all'interno di un altro metodo, ti faccio un esempio di come dovrebbero essere usati:

    HTML
    codice:
    <form id="menu" name="menu" method="GET">
       <button type="submit">invia</button>
    </form>
    JS
    codice:
    <script>
     $(document).ready(function() {
    	    $("#menu").submit(function(){
    		    alert("sto effettuando il submit");
    	    });
      });
    </script>

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    21
    Sono stato un pò troppo distratto effettivamente, mi hai fatto notare che non effettuavo il submit, inoltre ho trovato un errore eclatante!...non era istanziata nessun ogetto XMLHttpRequest ...e quindi non restituiva il documento xml.

    Adesso restituisce le info da inserire nella pagina.

    Grazie.
    _libero_arbitrio_

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se utilizzi la funzione jquery ajax non ti server istanziare l'oggetto XMLHttpRequest per aprire un canale verso il server perche lo fa direttamente il framework.

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.