2016-09-27 92 views
0

我试图发布一个表单给自我,它可以在禁用javascript的情况下工作,或者在启用javascript的情况下与ajax一起工作。从ajax post到自我返回数据时遇到问题

下面的示例工作如果JavaScript被禁用,但我没有得到任何response用ajax返回成功:

<?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> 

回答

1

最主要的是这里是当请求被阿贾克斯则呼应JSON后终止脚本数据

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

我只是试过了,它不起作用。 – JROB

+0

默认情况下会提交您的表单,请通过添加以下内容来阻止它:e.preventDefault();在你的jQuery表单提交功能 –