2009-02-17 19 views
23

Ich weiß, wie dies mit reinem PHP tun, aber ich muss dies tun, ohne die Seite neu zu laden. Gibt es sowieso mit jQuery, um einige Datenbankergebnisse (basierend auf dem, was ein Benutzer in das erste Textfeld eines Formulars eingegeben hat) effektiv zurückzuziehen und dann einige der verbleibenden Felder mit Daten aus einer Datenbankabfrage zu füllen?Dynamisch füllen Sie Formularwerte mit jQuery

Im Wesentlichen möchte ich, dass der Benutzer weg von dem Textfeld bewegt (entweder durch Tabulator oder durch Klicken in das nächste Feld) und Boom, die Abfrage wird mit dem Wert in diesem Feld eingegeben und die nachfolgenden Felder sind dann wird ohne Neuladen geladen.

Ich bin vertraut mit den Grundlagen von jQuery, aber ich habe es nicht verwendet, um so etwas zu tun, in dem ich Daten zurück vom Server ziehe und versuche, es Client-Seite zu füllen.

Irgendwelche Vorschläge/Beispiele, wie man am besten damit beginnt, würde sehr geschätzt werden. Vielen Dank.

  • Nicholas
+2

Boom geht das Dynamit! –

+0

Ein BoomQuery-Ereignis;) – Valilutzik

Antwort

29

Angenommen, dieses Beispiel HTML:

$("#email").bind("change", function(e){ 
    $.getJSON("http://yourwebsite.com/lokup.php?email=" + $("#email").val(), 
     function(data){ 
      $.each(data, function(i,item){ 
      if (item.field == "first_name") { 
       $("#first_name").val(item.value); 
      } else if (item.field == "last_name") { 
       $("#last_name").val(item.value); 
      } 
      }); 
     }); 
}); 

Dann einfach Sie haben einen PHP-Skript (in diesem Fall lookup.php), die eine E-Mail in den Takes:

<input type="text" name="email" id="email" /> 
<input type="text" name="first_name" id="first_name" /> 
<input type="text" name="last_name" id="last_name" /> 

Sie diesen javascript haben könnten Abfragezeichenfolge und gibt ein JSON-formatiertes Array mit den Werten zurück, auf die Sie zugreifen möchten. Dies ist der Teil, der tatsächlich die Datenbank trifft die Werte zu sehen:

<?php 
//look up the record based on email and get the firstname and lastname 
... 

//build the JSON array for return 
$json = array(array('field' => 'first_name', 
        'value' => $firstName), 
       array('field' => 'last_name', 
        'value' => $last_name)); 
echo json_encode($json); 
?> 

Sie wollen werden andere Dinge zu tun, wie die E-Mail-Eingang sanieren, etc, aber sollten Sie in die richtige Richtung bekommen.

+0

erwartet kann ich nicht scheinen, um das zu funktionieren ... Fehler: G ist undefiniert init()() jquery-1 .... 1.min.js (Zeile 12) (?)()() test.html (Zeile 15) I() jquery-1 .... 1.min.js (Zeile 19) F()() jquery-1 .... 1.min.js (Zeile 19) [Pause bei diesem Fehler ] (function() {var l = das, g, y = l.jQuery, p = l ..... jedes (function() {o.dequeue (das, E)})}}); –

+0

Gibt es eine effektive Möglichkeit, Ihnen meine vollständige Quelle zu zeigen? Kann es hier nicht mit der 300 Zeichen Grenze tun ... –

+0

Haben Sie einen Server, auf dem Sie es veröffentlichen können? – Parrots

8

Wenn Sie die Datenbank zu treffen, müssen Sie erneut auf den Webserver treffen (zum größten Teil).

Sie können AJAX verwenden, das eine Anforderung an ein anderes Skript auf Ihrer Site sendet, um Daten abzurufen, die Daten abzurufen und anschließend die gewünschten Eingabefelder zu aktualisieren.

AJAX Anrufe können mit dem $ Schnipsel() Funktionsaufruf in jquery gemacht werden, so dass diese

Benutzer des Browsers eingibt Eingang, der ein Trigger auslöst, der macht einen AJAX-Aufruf

$('input .callAjax').bind('change', function() { 
    $.ajax({ url: 'script/ajax', 
      type: json 
      data: $foo, 
      success: function(data) { 
      $('input .targetAjax').val(data.newValue); 
      }); 
); 

Jetzt passieren wird Sie müssen darauf hinweisen, dass AJAX-Aufruf bei Skript (klingt, als ob Sie PHP arbeiten), die die gewünschte Abfrage ausführen und Daten zurücksenden wird.

Sie werden wahrscheinlich das JSON-Objekt Gespräch verwendet werden sollen, so dass Sie ein Rück Javascript-Objekt übergeben können, das leichter sein wird, Rückkehr XML zu verwenden, als usw.

Die PHP-Funktion json_encode ($ phpobj); wird nützlich sein.

+0

Okay, so für die URL: Eigenschaft übergebe ich es mein PHP-Skript, aber was ist mit den Daten: Eigenschaft? Was bedeutet $ foo? –

+0

Blick auf http://docs.jquery.com/Ajax/jQuery.ajax#options Daten: $ foo in im Grunde die $ _POST oder $ _GET Zeichenfolge, die Sie benötigen für den Kontext an das Skript zu senden. also, wenn Sie Skript ist script.php? Id = 5 & name = toasty dann würde $ foo aussehen wie $ foo = {id: 5; name: 'toasty'} – jskulski

+0

Funktioniert das: "data: id: $ ('# sid'). val(),"? Oder sollte ich eine Variable (d. h. $ foo) auf den Wert von $ ('# sid') setzen. –

9

automatisch alle Formularfelder aus einem Array füllen

http://jsfiddle.net/brynner/wf0rk7tz/2/

JS

function fill(a){ 
    for(var k in a){ 
     $('[name="'+k+'"]').val(a[k]); 
    } 
} 

array_example = {"God":"Jesus","Holy":"Spirit"}; 

fill(array_example); 

HTML

<form> 
<input name="God"> 
<input name="Holy"> 
</form> 
+0

Sie können dies beispielsweise nach einer Ajax-Anfrage verwenden. –

+1

Das war unglaublich hilfreich. Danke für das Posten. –

+2

richtige Antwort eigentlich –

Verwandte Themen