我已经尝试了很多东西,无法解决这个问题,我正在使用此代码,并且我知道开始工作正常,因为它连接的脚本会在数据库中粘贴一些信息,但回调永远不会运行。 / p>
<script type="text/javascript">
$(document).ready(function() {
$(document.body).on('click', "#reply_submit", function() {
var formData = $('#reply').serialize();
$.post("newpost.php",formData, function(data){
alert("hi");
}, "json");
});
});
我的表单的ID是“回复”,我用来提交它的按钮是“回复提交”,只是为了确保这些内容清晰。
如果我删除最后一个“json”的东西,它也行不通。
答案 0 :(得分:1)
如果您阅读了jQuery.post()的文档,则说明了回调:
成功(data,textStatus,jqXHR)
如果请求成功则执行的回调函数。
如果没有被调用,则表示请求未成功。 newpost.php
中可能存在错误(数据插入后的某个时间,但在正常退出之前)。
您还可以使用长格式jQuery.ajax()而不是帖子简写来捕获错误条件:
$.ajax({
url: 'newpost.php',
data: formData,
type: 'post',
dataType: 'json',
success: function(data, textStatus, jqXHR) {
alert('success');
},
error: function(jqXHR, textStatus, errorThrown) {
alert('error!');
}
});
答案 1 :(得分:1)
单击时,表单也以标准方式提交。修改您的点击处理程序,如下所示:
$(document).on('click', "#reply_submit", function(e) {
e.preventDefault(); // prevent the default submit event
var formData = $('#reply').serialize();
// ...
});
虽然我认为document.body
应该是一个有效的节点包装在jQuery中,但我也将其修改为更常用的document
。
在这方面,如果表单永远不会被Ajax事件或其他DOM修改破坏,您可以绑定到#reply
而不是document
(或body
)。
答案 2 :(得分:1)
我只是假设您要提交表单而不重新加载整个页面。 基于该假设,以下代码将用于此目的。
$(document).ready(function(){
//on form submit event
$('form#reply').submit(function(){
$.post('newpost.php',$(this).serialize(),function(){
alert("Message or do something with the response data if you are expecting one");
});
//prevent default action
return false;
});
});
如果这不是您在项目中寻找的功能,请忽略该帖子。