2016-09-27 1 views
0

Ich versuche, ein Formular an self zu senden, das mit deaktiviertem JavaScript funktionieren würde, oder mit AJAX, wenn Javascript aktiviert ist.Probleme beim Zurückgeben von Daten von AJAX-Post an self

Das folgende Beispiel funktioniert, wenn Javascript deaktiviert ist, aber ich bekomme keine response auf Erfolg mit Ajax zurückgekehrt:

<?php 

if (isset($_POST['form'])) { 

    $return['msg'] = 'congrats. it was posted to self'; 

    if (isset($_POST['ajax'])) { 
    echo json_encode($return); 
    } 

} 

?> 

<script type="text/javascript"> 

$(document).ready(function() { 

$('#test-form').submit(function(e) { 

    var postTo = location.href; 

    var formData = $(this).serialize()+'&ajax=true'; 

    $.ajax({ 
    type: 'POST', 
    url: postTo, 
    data: formData, 
    dataType : 'json', 
    success: function(response) { 
     console.log(response); // Not getting anything here 
     $('#test-form-response').html(response.msg);   
    } 
    }); 

    e.preventDefault(); 

}); 

}); // End doc ready 

</script> 

<form id="test-form" method="post" class="validate"> 
    <input type="hidden" name="form" value="test"> 
    <input type="submit" id="submit-button" value="Submit"> 
</form> 

<div id="test-form-response"><?php if (isset($return['msg'])) { echo $return['msg']; } ?></div> 

Antwort

1

Die Hauptsache ist hier, wenn die Anforderung Ajax dann das Skript beenden, nachdem die JSON Echo Daten

if (isset($_POST['ajax'])) { 
    echo json_encode($return); 
    exit; 
} 
+0

Ich habe es gerade versucht und es funktioniert nicht. – JROB

+0

Ihr Formular wird standardmäßig übermittelt. Verhindern Sie es, indem Sie Folgendes hinzufügen: e.preventDefault(); in deiner jQuery-Form Submit-Funktion –

Verwandte Themen