2017-03-27 3 views
0

Ich füge mehrere Zeilen zu table.now alle Zeilen werden in der Datenbank mithilfe von Ajax-Aufruf in jquery speichern.Speichern von Tabellendaten mit Ajax jquery

HTML:

<table id="example" class="display" width="100%" cellspacing="0"> 
<thead> 
    <tr> 
     <th>Name</th> 
     <th>Email</th> 
     <th>Message</th> 
    </tr> 
</thead> 
<tbody> 
</tbody> 
</table> 
<form id="localStorageTest" method="post" action=""> 
<label>Name:</label> 
<input type="text" name="name" id="name" class="stored" value="" /> 

<label>Email:</label> 
<input type="email" name="email" id="email" class="stored" value="" /> 

<label>Message:</label> 
<textarea name="message" id="message" class="stored"></textarea> 

<button type="button" class="btn btn-success savebtn" style="padding: 6px 12px;" id="savebutton"><i class="icon-check-sign" aria-hidden="false"></i> Save </button> 
</form> 

JQuery-Code:

$("button#savebutton").click(function(){ 
          var name=$("#name").val(); 
          var email=$("#email").val(); 
          var message=$("#message").val();  
         var new_row = "<tr><td>" + name + "</td><td>" + email + "</td><td>" + message + "</td></tr>"; 
           $("table tbody").append(new_row); 
           return false; 
           $.ajax({ 
           type : 'POST', 
           data : formData, 
           cache : false, 
           processData : false, 
           contentType : false, 
           beforeSend: beforeSendHandler, 
           url : url, 
            success:function(result)          
            if (result.success==true) { 
             $('.alert-success').show(); 
             $('.alert-danger').hide(); 
             $("#successmsg").html(result.msg); 
             setTimeout(function() { 
              $(".alert-success").alert('close'); 
             }, 10000);           


            } else{ 
             $('.alert-danger').show(); 
             $('.alert-success').hide(); 
             $("#error").html(result.msg);           
             setTimeout(function() { 
              $(".alert-danger").alert('close'); 
             }, 10000); 

            } 
           }         
          }); 
    }); 

Wie alle Zeilen speichern. Ich versuche Ajax Anruf, aber ich weiß nicht, Daten in URL übergeben.

Ist es richtig oder nicht?

+0

In welchem ​​Format werden Sie es zu speichern? Kannst du eine Grundstruktur posten? –

+0

@Dan Philip: Bitte schauen Sie sich meine aktualisierte Frage an. – user7646838

+0

Sie rufen AJAX in jeder Zeile append an. Warum teilen Sie es nicht auf, eine Schaltfläche zum Hinzufügen der Zeilen zur Tabelle und eine weitere Schaltfläche, um es schließlich als ein vollständiges JSON-Objekt zu übergeben. Es würde viel Netzwerk-Overhead sparen. –

Antwort

0

Ich speichere die Daten aus der Tabelle als ein Array von Objekten, die jeweils tr Schleife.

<table id="example" class="display" width="100%" cellspacing="0"> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Email</th> 
      <th>Message</th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 
<form id="localStorageTest" method="post" action=""> 
    <label>Name:</label> 
    <input type="text" name="name" id="name" class="stored" value="" /> 

    <label>Email:</label> 
    <input type="email" name="email" id="email" class="stored" value="" /> 

    <label>Message:</label> 
    <textarea name="message" id="message" class="stored"></textarea> 

    <button type="button" class="btn btn-success savebtn" id="savebutton">Save</button> 
    <button type="button" class="btn btn-success savebtn" id="submitbutton">Submit</button> 
</form> 

Und das modifizierte Skript nach der Trennung sieht aus wie

$("button#savebutton").click(function() { 
    var name = $("#name").val(); 
    var email = $("#email").val(); 
    var message = $("#message").val(); 
    //---->Form validation goes here 
    var new_row = '<tr><td class="name">' + name + '</td><td class="email">' + email + '</td><td class="message">' + message + '</td></tr>'; 
    $("table tbody").append(new_row); 
}); 


$("button#submitbutton").click(function() { 
    var data = []; 
    var name, email, message; 
    $("table tbody tr").each(function(index) { 
    name = $(this).find('.name').text(); 
    email = $(this).find('.email').text(); 
    message = $(this).find('.message').text(); 
    //---->Form validation goes here 
    data.push({ 
     name: name, 
     email: email, 
     message: message 
    }); 
    }); 
    submitFormData(data); 
}); 


function submitFormData(formData) { 

    $.ajax({ 
    type: 'POST', 
    data: formData, 
    cache: false, 
    processData: false, 
    contentType: false, 
    beforeSend: beforeSendHandler, 
    url: url, 
    success: function(result) 
    if (result.success == true) { 
     $('.alert-success').show(); 
     $('.alert-danger').hide(); 
     $("#successmsg").html(result.msg); 
     setTimeout(function() { 
     $(".alert-success").alert('close'); 
     }, 10000); 


    } else { 
     $('.alert-danger').show(); 
     $('.alert-success').hide(); 
     $("#error").html(result.msg); 
     setTimeout(function() { 
     $(".alert-danger").alert('close'); 
     }, 10000); 

    } 
    }); 
} 
+0

danke ich habe deine Antwort bearbeitet. richtig oder nicht? – user7646838

+0

Können Sie Ihre Änderungen angeben? –

+0

Sie müssen nicht jedes Objekt an separate URLs senden, stattdessen können Sie ein ganzes Objekt an eine einzelne URL senden und es auf Ihrer Serverseite analysieren. –

Verwandte Themen