2016-03-21 3 views
0

So verwende ich jquery, ajax und php Abfragen und Anzeigen von Daten aus der Datenbank. Ich reiche Daten auf der Ajax-Seite ein, wie unten gezeigt.Iterating durch Ajax Anfrage basierend auf dem Status der spezifischen Schlüssel

Senden Ajax Anfrage

$('#mainInput').keydown(function(e) { 
    if (e.keyCode == 13 || e.keyCode == 9) { 

//Text after hitting enter button 

var user_id = "<?php echo $user_id; ?>"; 


$.ajax({ 
     type: 'POST', 
     url: 'ajax_get_code.php', 
     data: {mainInput: $("#mainInput").val(), 
       id : user_id}, 
     datatype:"json", 
     success: function(response) { 

      var parsedData = jQuery.parseJSON(response); 

       $.each(parsedData, function(index){ 


       if (parsedData.value2 == null){ 
        $("#mainInput").val(parsedData.value); 
        $("#secondaryInput").val(parsedData.value); 

       } 
       else {            

        $("#mainInput").val(parsedData.value); 
        $("#secondaryInput").val(parsedData.value2); 
       } 
      }); 

     }, 
     error: function(xhr, status, error){ 
    alert("Error!" + xhr.status); 
    } 
    }); 

    e.preventDefault(); 


    } 


}); 

auf der Prozessanforderung Seite ich die Zeichenfolge explodierte die Vorlage zu trennen dieses Zeichen basierend auf „“. damit ein Benutzer mehrere Abfragen gleichzeitig ausführen kann.

Ajax Prozess Anfrage

<?php 

require_once("class.codes.php"); 


$userCode= $_POST['mainInput']; 
$user_id = $_POST['id']; 

$removeSpace = str_replace(' ','', $userCode); 
$parts = explode(",", $removeSpace); 

foreach($parts as $part){  


      $all_codes = New CODES; 


       try 
    { 
     $stmt = $all_codes->runQueryTwo("SELECT user_code, user_text FROM codes WHERE user_code=:userCode AND user_id=:user_id"); 
     $stmt->execute(array(':userCode'=>$part, ':user_id'=>$user_id)); 
     $row=$stmt->fetch(PDO::FETCH_ASSOC); 

        //result 

        $user_text = $row['user_text']; 

        echo json_encode(array("value"=>$part,"value2"=>$user_text)); 


    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 


} 




?> 

Als ich die Anfrage Konsolprotokoll die .parseJson Bibliothek und nur eine Abfrage übergeben ich die richtige Antwort bekommen, und es füllt die Textfelder entsprechend. Wenn ich jedoch mehrere Schlüssel übergebe, die durch "," getrennt sind, bekomme ich nichts zurück. Kein Fehler, nichts.

Allerdings, wenn ich die Anfrage mit mehreren Abfragen ohne die Verwendung der .parseJson-Bibliothek Konsole protokollieren, bekomme ich die richtige Antwort, die wie die Beispieldaten unten aussieht.

{"value":"backbone","value2":"backbone, fixed."}{"value":"james","value2":"james"}{"value":"john","value2":null} 

Das ist richtig, aber ich will jetzt alle die Tasten „Wert“ in dem mainInput Textfeld und die Tasten „Wert2“ im secondaryInput anzuzeigen. Es sollte einige durchgehen, bis es keine Schlüsselwertpaare mehr gibt.

Ich habe versucht, mit der for-Schleife und wenn ich eine Abfrage senden, gibt es das doppelte der Schlüsselwertpaare.

Ich bin neu zu PHP und Ajax bitte helfen, wie ich den ganzen Tag Forschung und Dinge versucht habe. Ich habe auch eine while-Schleife ausprobiert und es läuft einfach unendlich.

+0

Statt 'var parsedData = jQuery.parseJSON (Antwort);' können Sie versuchen, 'var analysedData = JSON.parse (Antwort);' –

+0

Es funktioniert immer noch nur mit einer Abfrage. – CoderPoet

Antwort

0

Angenommen #mainInput ist ein Textbereich, die Zeile $("#mainInput").val(parsedData.value); überschreibt jeden vorherigen Wert in der for-Schleife.

Sie tun müssen, ist verketten, was bereits in der Textbox, damit in Ihrer Ajax-Erfolg Funktion würden Sie Sie Code als solche schreiben:

var parsedData = JSON.parse(response); 

$.each(parsedData, function(index, value){ 
    $("#mainInput").val(parsedData.value); 
    $("#secondaryInput").val(parsedData.value); 
}); 

Beachten Sie auch behoben bitte, nimmt die Unterschrift von $.each Callback-Funktion 2 Parameter, zuerst der Index (das wird value, value2) dann der Wert sein.

Verwandte Themen