Javascript帖子,没有刷新页面

时间:2013-08-03 21:38:26

标签: php javascript

我有以下代码,它是将消息发布到“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它也不会发布,有人能找到解决方法吗?非常感谢

3 个答案:

答案 0 :(得分:1)

实际上,return的{​​{1}}并没有离开事件监听器。要使用您正在使用的样式来修复此问题,只需更改

dopost

onclick="dopost();"

或者,您需要通过onclick="return dopost();" 或首选方法直接添加dopost作为听众。

答案 1 :(得分:0)

为什么你还需要dopost()功能?非常多余。使用监听器就足够了:

http://jsfiddle.net/L9Kfg/

在你的HTML上:

<input type="submit" name="chat" />

在你的js:

   var request;
   $("#chat").submit(function (e) {
       e.preventDefault();
       ...
   });

答案 2 :(得分:-1)

因为你已经在使用Jquery了,我想你会看到来自Jquery的$ .post,这会使用我们称之为Ajax的调用。简单来说,您的网页使用post发送数据,但保留在同一页面上,您可以使用回调函数在完成此帖子后执行操作。