2016-09-27 5 views
0

javascriptが無効になっていれば自己にフォームを投稿しようとしていますが、JavaScriptが有効な場合はajaxで投稿しています。ジャバスクリプトが無効になっている場合ajax投稿から自己にデータを返すのに問題がある

次の例では動作しますが、私は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

主なものはここにあるリクエストがAjaxが、その後JSONをエコーし​​た後、スクリプトを終了したときでありますデータ

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

私はそれを試しただけで動作しません。 – JROB

+0

あなたのフォームはデフォルトで提出され、以下を追加することでそれを防止します:e.preventDefault();あなたのjqueryフォームの送信機能で –

関連する問題