从ajax post到自我返回数据时遇到问题
问题描述:
我试图发布一个表单给自我,它可以在禁用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>
答
最主要的是这里是当请求被阿贾克斯则呼应JSON
后终止脚本数据
if (isset($_POST['ajax'])) {
echo json_encode($return);
exit;
}
我只是试过了,它不起作用。 – JROB
默认情况下会提交您的表单,请通过添加以下内容来阻止它:e.preventDefault();在你的jQuery表单提交功能 –