jquery .submit 多次?

发布于 2024-11-10 02:43:52 字数 742 浏览 1 评论 0原文

我有以下代码:

$('.save').submit(function(e){
    var data = 'id=' + $(this).attr('name') + '&' + $(this).serialize();
    var messageBox = $(this).next('.message');
    messageBox.html('<div class="pending">Saving... please wait...</div>');
    $.post('save.php', data,
    function(response) {
        messageBox.html(response).delay(3000).fadeOut('slow');
    });
    e.preventDefault();
});

它工作得很好,但是,当用户再次按下“保存”时,似乎 $('.save').submit(); 不会再次被解雇....我至少没有在 messageBox 中看到待处理或成功消息。

我缺少什么?

编辑

我想通了。当我fadeOut时,我不会淡出错误div,而是淡出整个messageBox div,所以一旦它是display:none,没有什么可以把它带回来。

I have the following code:

$('.save').submit(function(e){
    var data = 'id=' + $(this).attr('name') + '&' + $(this).serialize();
    var messageBox = $(this).next('.message');
    messageBox.html('<div class="pending">Saving... please wait...</div>');
    $.post('save.php', data,
    function(response) {
        messageBox.html(response).delay(3000).fadeOut('slow');
    });
    e.preventDefault();
});

And it works great, however, when a user pushes "save" again, it seems like that $('.save').submit(); is not getting fired again.... I'm at least not seeing a pending or success message within messageBox.

What am I missing?

EDIT

I figured it out. When I fadeOut, I'm not fading out the error div, I'm fading out the entire messageBox div, and so once it's display:none, there's nothing bringing it back.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘴硬脾气大 2024-11-17 02:43:52

最可能的问题是您的 AJAX 未成功返回。向其添加 .error() 函数。

jquery 文档中的示例代码:

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("example.php", function() {
  alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

http://api.jquery.com/jQuery.post/

Most likely problem is that your AJAX isn't returning succesffully. Add a .error() function to it.

Example code from jquery docs:

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("example.php", function() {
  alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

http://api.jquery.com/jQuery.post/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文