0

我有以下代码,它是在“聊天框”中发布一条消息,但是当我输入时返回 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>

即使我将 return false 添加到 onclick 它也不会发布,任何人都可以找到解决方案吗?将不胜感激

4

3 回答 3

1

事实上,returnofdopost并没有脱离事件监听器。要使用您使用的样式解决此问题,只需更改

onclick="dopost();"

onclick="return dopost();"

或者,您需要通过一个或您喜欢的方法dopost直接添加为侦听器。addEventListener

于 2013-08-03T21:42:18.310 回答
0

为什么你仍然需要一个dopost()函数?是很多余的。使用监听器就足够了:

http://jsfiddle.net/L9Kfg/

在您的 html 上:

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

在你的 js 上:

   var request;
   $("#chat").submit(function (e) {
       e.preventDefault();
       ...
   });
于 2013-08-03T21:47:07.997 回答
-1

由于您已经在使用 Jquery,我建议您看一下来自 Jquery 的 $.post,它使用我们所谓的 Ajax 调用。简单来说,您的网页使用 post 发送数据,但停留在同一页面上,您可以在 post 完成后使用回调函数进行操作。

于 2013-08-03T21:44:01.523 回答