Ok, ich weiß, dass dieser Ajax funktioniert, aber ich kann nicht verstehen, warum er hier nicht eingereicht wird.

<script type="text/javascript">
$(function(){
    $('input[type=submit]').click(function(){
        $.ajax({
            type: "POST",
            url: "postitem.php",
            data: $("#myform").serialize(),
            beforeSend: function(){
                $('#result').html('<img src="loading.gif" />');
            },
            success: function(data){
                $('#result').html(data);
            }
        });
    });
});

Formular einreichen

<form action="" method="post" onsubmit="return false;" id="myform">

Senden-Schaltfläche

<input type="hidden" value="Post" name="submit" /> 
<button type="submit" title="Done" style="height:33px; width:50px">
    <img src="../../css/images/plus_25.png" />
</button>

Ich bin mir ziemlich sicher, dass etwas mit der Schaltfläche nicht stimmt, aber ich möchte die Schaltfläche beibehalten, da viele meiner anderen Formulare dieselbe Schaltfläche verwenden. Vielen Dank, wenn Sie mir erklären können, warum das Klicken auf diese Schaltfläche zum Senden nichts bewirkt.

3
Sickest 5 Dez. 2013 im 00:28

3 Antworten

Beste Antwort

Sie wählen ein <input> anstelle eines <button>. Ich hatte Erfolg, indem ich Ihren jQuery-Selektor von diesem geändert habe:

$('input[type=submit]')

Dazu:

$('button[type=submit]')

http://jsfiddle.net/H3Bcc/

6
showdev 4 Dez. 2013 im 20:31

Versuche dies :

<script type="text/javascript">
$(function(){
    $('input[type=submit]').click(function(e){
e.preventDefault(); // prevent the browser's default action of submitting 
        $.ajax({
            type: "POST",
            url: "postitem.php",
            data: $("#myform").serialize(),
            beforeSend: function(){
                $('#result').html('<img src="loading.gif" />');
            },
            success: function(data){
                $('#result').html(data);
            }
        });
    });
});
-1
Mouhamed Halloul 4 Dez. 2013 im 20:34

Nicht alle Browser interpretieren ein click, das an eine Senden-Schaltfläche angehängt ist, als Senden des Formulars, sodass Sie den Klick auf diese Schaltfläche praktisch nur negieren.

Das Verhindern einer Formularübermittlung sollte vorzugsweise erfasst werden, indem der submit -Handler an den <form> angehängt wird, wenn Sie einen <input type="submit"> oder <button type="submit> haben. Dies ist also der beste Weg, um den Erfolg sicherzustellen:

jQuery

$(function(){
    $('#myform').on('submit', function(e){

        // prevent native form submission here
        e.preventDefault();

        // now do whatever you want here
        $.ajax({
            type: $(this).attr('method'), // <-- get method of form
            url: $(this).attr('action'), // <-- get action of form
            data: $(this).serialize(), // <-- serialize all fields into a string that is ready to be posted to your PHP file
            beforeSend: function(){
                $('#result').html('<img src="loading.gif" />');
            },
            success: function(data){
                $('#result').html(data);
            }
        });
    });
});

HTML

<form action="postitem.php" method="POST" id="myform">
    <input type="hidden" value="Post" name="submit" /> 
    <button type="submit" title="Done" style="height:33px; width:50px">
        <img src="../../css/images/plus_25.png" />
    </button>
</form>
2
MonkeyZeus 5 Dez. 2013 im 13:17