Problema nel concatenare jquery ed ajax nella stessa pagina

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti,
io ho questa pagina php:

PHP:
<?php
 include('connect.php');
?>
<!DOCTYPE html>
<html lang="it">
  <head>
    <meta charset="utf-8">
    <title>Creazione DdT</title>
            <style type="text/css">
        * { font-family:Arial; }
        h2 { padding:0 0 5px 5px; }
        h2 a { color: #224f99; }
        a { color:#999; text-decoration: none; }
        a:hover { color:#802727; }
        p { padding:0 0 5px 0; }

        input { padding:5px; border:1px solid #999; border-radius:4px; -moz-border-radius:4px; -web-kit-border-radius:4px; -khtml-border-radius:4px; }
        </style>
        <script type="text/javascript" src="ajax.js"></script>
	<script type="text/javascript">
	
	var ajax = new sack();
	var currentClientID=false;
	function getClientData()
	{
		var clientId = document.getElementById('clientID').value.replace(/[^0-9]/g,'');
		if(clientId.length==4 && clientId!=currentClientID){
			currentClientID = clientId
			ajax.requestFile = 'getClient.php?getClientId='+clientId;	// Specifying which file to get
			ajax.onCompletion = showClientData;	// Specify function that will be executed after file has been found
			ajax.runAJAX();		// Execute AJAX function			
		}
		
	}
	
	function showClientData()
	{
		var formObj = document.forms['clientForm'];	
		eval(ajax.response);
	}
	
	
	function initFormEvents()
	{
		document.getElementById('clientID').onblur = getClientData;
		document.getElementById('clientID').focus();
	}
	
	
	window.onload = initFormEvents;
	</script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script>
    $(function() {
      $("#aggiungi").click(function() {
        elem = $(".campo").first().clone();
        elem.css("display", "block");
        elem.appendTo("#campi");
      });

      $("#campi").on("click", ".remove", function() {
        $(this).parent().remove();
      });

      $("#aggiungi").click();
    });
    </script>
<style type="text/css">
body { background-image: url(sfondo.jpg); 
background-repeat: repeat-x;
font: Eras Medium ITC;
}
</style>

<style type="text/css">
#main {
	width:820px;
	height:600px;
	position:absolute;
	top:352px;
	left:523px;
	margin:-150px 0 0 -336px;
}
</style>
</head>
<body bgcolor="#f7b76b">
  <p align="center">
 <img src="images/logo.png" >
  <form action="read_ddt.php" method="post" name="read"> 
  <div id="main"> 
   Operatore: <font color="#FF0000"><?php echo $_SESSION[user]; ?></font><br>
   Data: <?php echo (date("d/m/Y"));?><br>
   Ora: <?php echo (date("H:i"));?><br>
   Barcode card:<font color="#FF0000"><?php echo $_SESSION[barcode]; ?></font><br><br>
   <input type="button" onClick="window.open('puntifidelity.htm', 'Cerca card', 'width=690, height=700, resizable, status, scrollbars=1, location');"
value="Cerca card">
   <p align="left"><a href="#" id="aggiungi">Aggiungi riga</a></p>

    <div id="campi">
    <p>
      <div class="campo" style="display: none;">
      <input name="clientID" id="clientID" size="5" maxlength="4">
        <input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione">
        <input type="text" placeholder="Quantità" name="quantita[]" id="quantita">
        <input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo">
        <br><a href="#" class="remove">Rimuovi riga</a></br>
        </p>
      </div>
    </div>
    <p>

<input name="read" type="submit" id="read" value="Inserisci"> 
</p>
</div>
</form> 
</p>
  </body>
</html>

Il problema è che funziona la parte che cliccando aggiuge una nuova riga, creando l'array come sempre, ma la parte che dovrebbe fare l'autocompletamento non funziona...
Premetto che la parte dell'autocompletamento funziona perfettamente standalone ma integrata a questa non ne vuole sapere...

La pagine getclient è questa:

PHP:
<?php
/* Replace the data in these two lines with data for your db connection */
$connection = mysql_connect("localhost","adminteclis","password");  
mysql_select_db("my_adminteclis",$connection);

if(isset($_GET['getClientId'])){  
  $res = mysql_query("select * from ajax_client where clientID='".$_GET['getClientId']."'") or die(mysql_error());
  if($inf = mysql_fetch_array($res)){
    echo "formObj.descrizione.value = '".$inf["firstname"]."';\n";    
    echo "formObj.quantita.value = '".$inf["lastname"]."';\n";    
    echo "formObj.prezzo.value = '".$inf["address"]."';\n";        
    
  }else{
    echo "formObj.firstname.value = '';\n";    
    echo "formObj.lastname.value = '';\n";    
    echo "formObj.address.value = '';\n";          
  }    
}
?>
 
Ciao, lo script va rivisto poichè ci sono funzioni dirette create in Js e non c'è una chiamata ad Ajax con JQuery ma bensì una variabile che istanza l'acronimo Ajax.
 
potresti spiegarti meglio perfavore? sono un perfetto neofita con ajax e js... Entrambi in singolo funzionano benissimo...
 
Ciao, intendo dire che sarebbe meglio chiamare Ajax con JQuery in
questo modo:

Esempio "con dei valori da richiedere a PHP:"

PHP:
<?php
   
   (int)$id = $_GET["id"];
   if ($id==1)
    echo "Chiamata 1";
   if ($id==2) 
    echo "Chiamata 2";
   if ($id==3) 
    echo "Chiamata 3";
   if ($id!=1 && $id!=2 && $id!=3) 
    echo "ERRORE: Parametro non valido!";

?>

La chiamata Ajax con JQuery sarà semplicemente:

PHP:
<script>
  
  $.ajax({
    type: "GET",
    url: "tuo_file.php",
    data: "id=1",
     success: function(resposta){
      $("#output").html(resposta);
     }
  });

</script>
 
mi disp ma per quanto tu possa essere chiaro io ci capisco veramente poco... innanzitutto io l'id lo ho in immissione, quindi non so che numero sarà l'id...

Io in immissione come dati in php ho solamente l'id che per esattezza corrisponde al barcode... Da li in maniera del tutto automatica richiama descrizione quantita e prezzo...
Mentre l'altro pezzo in jquery non fa altro che moltiplicare i campi di immissione per ogni volta che premo "aggiungi riga"
 
aggiungo lo script della chiamata ajax :

Codice:
<script type="text/javascript" src="ajax.js"></script>
	<script type="text/javascript">
		
	var ajax = new sack();
	var currentClientID=false;
	function getClientData()
	{
		var clientId = document.getElementById('clientID').value.replace(/[^0-9]/g,'');
		if(clientId.length==13 && clientId!=currentClientID){
			currentClientID = clientId
			ajax.requestFile = 'getClient.php?getClientId='+clientId;	// Specifying which file to get
			ajax.onCompletion = showClientData;	// Specify function that will be executed after file has been found
			ajax.runAJAX();		// Execute AJAX function			
		}
		
	}
	
	function showClientData()
	{
		var formObj = document.forms['clientForm'];	
		eval(ajax.response);
	}
	
	
	function initFormEvents()
	{
		document.getElementById('clientID').onblur = getClientData;
		document.getElementById('clientID').focus();
	}
	window.onload = initFormEvents;
	</script>

la pagina getclient.php non fa altro che connettersi al DB controllare se c'è quel barcode e stampare la form...
 
ho fatto delle prove ma non riesco a capire come concatenarli... o mi funziona uno o mi funziona l'altro....
 
Se non ci capisci niente e non hai tempo/voglia di studiare le basi perché non fai fare il lavoro a qualcuno che ci campa facendo queste cose? (tipo me)
 
Se non ci capisci niente e non hai tempo/voglia di studiare le basi perché non fai fare il lavoro a qualcuno che ci campa facendo queste cose? (tipo me)

Questo è un forum di scambio di idee e opinioni... nella fatti specie questa non è la sezione del mercatino... Percui se devi rispondere AIUTANDO fallo senza andare off topic, se devi raccimolare uno straccio di lavoro. Se non avessi avuto le conoscienze di base non avrei scritto neanche quelle due righe dei due codici... Il problema non sono i due script, perchè se tu avessi letto singolarmente funzionano entrambi. Assieme non riesco a concatenarli ed ho chiesto aiuto.
 
no tu hai preso due codici da internet modificandoli come ti servivano e li hai mischiati insieme. Non è esattamente quello che chiamerei "competenze di base".

Sui forum si scrive per essere aiutati, non per farsi fare il lavoro al posto proprio.
 
detta in tutta sincerità è lui che si è preso la briga di venire a rompere i coglioni a me... In ogni caso se non hai voglia\competenze\capacità di aiutarmi non farlo. In alternativa se pensi che riesci a darmi una mano io sto qua.
Quello che ho fatto io non deve interessare a te, io ho fatto quel che potevo nei limiti delle mie capacità momentanee. Ho scritto fin da subito che le mie competenze erano BASILARI. Questo non significa andare su internet e prelevare due codici come dici tu.
 
Emix ti invito ad utilizzare termini appropriati.
Altrimenti come ha giustamente fatto notare il collega Alessandro
si procederà con la chiusura o l'eliminazione del post.
Questa è una community e come ogni collettivo che si rispetti
le norme di civiltà non devono essere una considerazione accessoria.
 
si ma ribadisco che non ho usato termini impropri... se l'ho fatto mi dispiace... sta di fatto che è lui che è venuto qui a sentenziare, io non gli ho chiesto nulla.
 

Discussioni simili