网站搜索

javascript - jQuery 提交刷新页面


以下代码旨在执行纯粹的 AJAX POST 请求,但它似乎通过 AJAX 执行 POST 后浏览器会导航到响应。

HTML...

<div id="bin">
    <form class="add" method="post" action="/bin/add/">
        <p>I'm interested! Save for later.</p>
        <input type="hidden" name="product_id" value="23423">
        <input type="submit" value="Save">
    </form> 
    <form style="display:none;" class="remove" method="post" action="/bin/remove/">
        <p>I changed my mind--I'm not interested.</p>
        <input type="hidden" name="product_id" value="23423">
        <input type="submit" value="Unsave">
    </form>
</div>

jQuery...

$('#bin form').submit(function() {
                $.post($(this).attr('action'),{
                    success: function(data) { $(this).hide().siblings('form').show() },
                    data: $(this).serialize()

                });
                return false;
            })

据我所理解,return false; 这一行应该意味着无论如何,对 submit 函数的任何调用,点击“Submit”按钮或按下回车键,都将执行我的函数,并且浏览器 不会 导航到 /bin/add 或 /bin/remove。但是出于某种原因,浏览器 确实 在更改页面。

有什么想法我在这里做错了什么吗?谢谢。

答案#1

可能是你的 JavaScript 出现了错误,因此正在执行默认行为。

尝试在像 Firebug 这样的工具中检查 XHR。

另外,你可以尝试 event.preventDefault()(其中事件回调的第一个参数是 event)。

答案#2

我打赌这是因为 $ (this),试试这样……

$('#bin form').submit(function() {
    var $this = $(this);
    $.post($this.attr('action'), {
        success: function(data) {
            $this.hide().siblings('form').show()
        },
        data: $this.serialize()

    });
    return false;
});

演示 无错误

演示 带有错误