我怎样才能检测到“任何”?使用 jQuery 完成 ajax 请求?

发布于 2024-09-02 20:41:54 字数 264 浏览 6 评论 0原文

我有一个页面,可以在其中插入一些 javascript / jquery 来操作输出。我对页面标记等没有任何其他控制。

我需要在页面上的每个元素之后通过 jquery 添加一个额外的元素。问题是元素是通过 $(document).ready 完成后发生的现有页面上的异步调用生成的。

本质上,我需要一种在页面加载并且后续 ajax 调用完成后调用 jquery 的方法。有没有办法检测页面上任何 ajax 调用的完成情况,然后调用我自己的自定义函数在新创建的 s 之后插入附加元素?

I have a page where I can insert some javascript / jquery to manipulate the output. I don't have any other control over the page markup etc.

I need to add an extra element via jquery after each present on the page. The issue is that the elements are generated via an asynchronous call on the existing page which occurs after $(document).ready is complete.

Essentially, I need a way of calling my jquery after the page has loaded and the subsequent ajax calls have completed. Is there a way to detect the completion of any ajax call on the page and then call my own custom function to insert the additional elements after the newly created s ?

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

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

发布评论

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

评论(5

忱杏 2024-09-09 20:41:54

不幸的是,这并不适用,因为OP似乎没有使用 $.ajax() 或任何用于实际加载内容的 jQuery ajax 方法,但将其保留在此处,以防将来的 googler 这样做。


您可以使用 任何满足您需求的全局ajax事件,您可能是在 $.ajaxComplete()$.ajaxSuccess()

例如:

$(document).ajaxSuccess(function() {
  alert("An individual AJAX call has completed successfully");
});
//or...
$(document).ajaxComplete(function() {
  alert("ALL current AJAX calls have completed");
});

如果您只想运行一些通用函数,则将它们附加到文档(它们只是下面的事件)。如果您想显示特定的内容,例如模式或消息,您可以使用它们更简洁一些(尽管这似乎不是您想要的),如下所示:

$("#myModal").ajaxComplete(function() {
  $(this).fadeIn().delay(1000).fadeOut();
});

Unfortunately this doesn't apply since it seems the OP isn't using $.ajax() or any jQuery ajax method for actually loading content, but leaving it here in case future googler's are doing this.


You can use any of the global ajax events that meet your needs here, you're probably after $.ajaxComplete() or $.ajaxSuccess().

For example:

$(document).ajaxSuccess(function() {
  alert("An individual AJAX call has completed successfully");
});
//or...
$(document).ajaxComplete(function() {
  alert("ALL current AJAX calls have completed");
});

If you want to run just some generic function then attach them to document (they're just events underneath). If you want to show something in particular, for example a modal or message, you can use them a bit neater (though this doesn't seem to be what you're after), like this:

$("#myModal").ajaxComplete(function() {
  $(this).fadeIn().delay(1000).fadeOut();
});
说不完的你爱 2024-09-09 20:41:54

此示例仅使用 jQuery 在 ajax 调用开始和结束时显示和隐藏元素:

    $("#contentLoading").ajaxSend(function(r, s) {
        $(this).show();
        $("#ready").hide();
    });

    $("#contentLoading").ajaxStop(function(r, s) {
        $(this).hide();
        $("#ready").show();
    });

#contentLoading 是一个 gif 图像进度指示器。

This example just shows and hides elements at the start and end of ajax calls using jQuery:

    $("#contentLoading").ajaxSend(function(r, s) {
        $(this).show();
        $("#ready").hide();
    });

    $("#contentLoading").ajaxStop(function(r, s) {
        $(this).hide();
        $("#ready").show();
    });

#contentLoading is an gif image progress indicator.

菩提树下叶撕阳。 2024-09-09 20:41:54

您可以重写 XMLHttpRequest 对象的 send() 函数。

此处查看使用纯 Javascript 实现此目的的解决方案。

You could rewrite the send() function of the XMLHttpRequest object.

See a solution for doing just so using pure Javascript here.

岁月蹉跎了容颜 2024-09-09 20:41:54

据我所知,您正在准备好的处理程序中使用一些 jQuery 的 Ajax 函数。因此,您可以将另一个函数传递给它,该函数将在您的 Ajax 函数获得响应后被调用。例如

$(document).ready(function(){
    $("#some_div").load('/some_url/', function(){
        /* Your code goes here */
    });
});

As i could understand, you are using some jQuery's Ajax function in your ready handler. So you could just pass it another function, which will be invoked after your Ajax function gets response. For example

$(document).ready(function(){
    $("#some_div").load('/some_url/', function(){
        /* Your code goes here */
    });
});
别在捏我脸啦 2024-09-09 20:41:54

您可以使用 .live()/.delegate()

You could use .live()/.delegate().

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