我有以下代码,它是将消息发布到“chatbox”中,但是当我把return false时;在函数结束时,它不会提交数据,但是当我删除它时,它会提交它应该是。
JS代码
function dopost() {
var request;
$("#chat").submit(function(event){
if(request) {
request.abort();
}
var $form = $(this);
var $inputs = $form.find("input, button");
var serializedData = $form.serialize();
$inputs.prop("disabled", true);
request = $.ajax({
url: "/chat.php",
type: "post",
data: serializedData
});
request.done(function(response, textStatus, jqXHR) {
console.log("Hooray, it worked!");
});
request.fail(function(jqXHR, textStatus, errorThrown){
console.error("The following error occured:" + textStatus, errorThrown);
});
request.always(function(){
$inputs.prop("disabled", false);
});
e.preventDefault();
});
return false;
}
表格
if(isset($_POST['chat'])) {
$message = mysql_real_escape_string($_POST['message']);
$time = time();
$userid = $user_class->id;
$result1 = mysql_query("INSERT INTO `newchat` (posted, posterid, message,extraid) VALUES ('" . $time . "', '0', '".$message."','" . $userid . "')") or die(mysql_error());
}
<form method='post' action='chat.php' id="chat">
<div class='chatwrap'>
<div class='chatlog'>
</div>
</div>
<div style='width:600px;margin:0 auto;padding: 5px'>
<input type='text' class='w400' name="message" value placeholder="Type message here..." /> <input type="submit" onclick="dopost();" name="chat" />
</div>
</form>
即使我在onclick上添加return false它也不会发布,有人能找到解决方法吗?非常感谢
答案 0 :(得分:1)
实际上,return
的{{1}}并没有离开事件监听器。要使用您正在使用的样式来修复此问题,只需更改
dopost
到
onclick="dopost();"
或者,您需要通过onclick="return dopost();"
或首选方法直接添加dopost
作为听众。
答案 1 :(得分:0)
为什么你还需要dopost()
功能?非常多余。使用监听器就足够了:
在你的HTML上:
<input type="submit" name="chat" />
在你的js:
var request;
$("#chat").submit(function (e) {
e.preventDefault();
...
});
答案 2 :(得分:-1)
因为你已经在使用Jquery了,我想你会看到来自Jquery的$ .post,这会使用我们称之为Ajax的调用。简单来说,您的网页使用post发送数据,但保留在同一页面上,您可以使用回调函数在完成此帖子后执行操作。