2013-03-09 19 views
10

Ich habe ein Formular, und ich möchte Daten speichern über Ajax jQuery Post. Wenn Sie die Taste save type="submit" ist, tut es nicht diese nur leere Alarm ... Ich möchte, Daten speichern und auf gleiche Form mit refresh Felder bleiben ...Daten speichern über Ajax jQuery Post mit Formular senden

Hier ist, was ich versucht habe:

$("#saveNewContact").click(function() { 
    var name  = $("#name").val(); 
    var last_name = $("#last_name").val(); 
    $.post("ajax_files/save_mydeals.php", {name: name, last_name: last_name}, 
    success: function(msg){ 
    alert(msg); 
    }); 
}); 

und hier meine Form

ist
<form id="myForm" action="#" method="post"> 
<table id="table_1" class="form_table" align="center" cellpadding="0" cellspacing="0"> 
<tbody> 
    <tr><td> 
    <input name="name" id="name" value="" tabindex="5" readonly="" type="text"> 
    <input name="name" id="name" value="" tabindex="5" readonly="" type="text"> 
    <button type="submit" id="update" style="display:none;" 
    class="save_button saveHEX" name="Update" 
    value="Update Listing">Save Lead</button></td> 
    </tr> 
</table> 
</form> 
+0

Warum stellen Sie nicht einfach den Eingabetyp als 'Schaltfläche' ein? –

+0

Ich möchte nach diesem Formular löschen, leere Textfelder – Methew

+0

können Sie es auf andere Weise löschen. '$ ('# myForm'). find ('input'). val ('');' tun Sie es in Ihrer Erfolgsfunktion. –

Antwort

13

Sie es auf diese Weise

HTML

<form name="frm" method="POST" action=""> 
<input type="text" name="name" id="name" value="" /> 
<input type="text" name="last_name" id="last_name" value="" /> 
<input type="submit" name="Update" id="update" value="Update" /> 
</form> 

Ihre jQuery

$("#update").click(function(e) { 
    e.preventDefault(); 
    var name = $("#name").val(); 
    var last_name = $("#last_name").val(); 
    var dataString = 'name='+name+'&last_name='+last_name; 
    $.ajax({ 
    type:'POST', 
    data:dataString, 
    url:'insert.php', 
    success:function(data) { 
     alert(data); 
    } 
    }); 
}); 

So in der insert.php Seite

<?php 
    $name = $_POST['name']; 
    $last_name = $_POST['last_name']; 
    $insert = "insert into TABLE_NAME values('$name','$last_name')";// Do Your Insert Query 
    if(mysql_query($insert)) { 
    echo "Success"; 
    } else { 
    echo "Cannot Insert"; 
    } 
?> 

Hope this gibt eine Idee

+1

genau das habe ich ausprobiert .. aber das Problem war, wann der Button-Typ gesendet wurde, es gibt leere Warnung zurück ... keine Daten in db eingefügt ... kann ich type = submit ändern? – Methew

+1

@Methew: Ja Sie können type = "submit" verwenden. Aber mit ein wenig Modifikation.Ich habe die Antwort aktualisiert bitte überprüfen Sie – Roger

+1

Ich denke, es wäre schöner, das DataType-Attribut des Post (oder Ajax-Methode -> setzen Sie es auf Json und keine Notwendigkeit für hässliche Serialisierung! http: // api.jquery.com/jQuery.post/ – rebe100x

2

Bind der die Form einreichen statt und kein Erfolg in der $ .post notwendig, die Funktion ist genug:

$(function() { 
    $("#myForm").on("submit",function (e) { 
    e.preventDefault(); // stop the normal submission 
    var name  = $("#name").val(); 
    var last_name = $("#last_name").val(); 
    $.post("ajax_files/save_mydeals.php", {name: name, last_name: last_name}, 
    function(msg){ 
     alert(msg); 
     $("#name").empty(); 
     $("#last_name").empty(); 
    }); 
    }); 
}); 
7

Sie brauchen kein Click-Ereignis für diese entfernen $("#saveNewContact").click(function() { und verwenden Sie .submit() jQuery-Methode.

Verwenden Sie auch .serialize, mit denen Sie Formularfelder mit Wert serialisieren und urlencoded DataString erstellen können.

$("#myForm").on("submit",function (e) 
{ 
    e.preventDefault(); 
    var formData = $(this).serialize(); 
    $.ajax(
    { 
     type:'post', 
     url:'receiver url', 
     data:formData, 
     beforeSend:function() 
     { 
      launchpreloader(); 
     }, 
     complete:function() 
     { 
      stopPreloader(); 
     }, 
     success:function(result) 
     { 
      alert(result); 
     } 
    }); 
});