首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果ajax请求完成,则调用函数

问如果ajax请求完成,则调用函数
EN

Stack Overflow用户
提问于 2015-10-07 22:18:12
回答 2查看 114关注 0票数 1

我有一个按钮和2个链接,这是一个ajax请求。如果通过按钮调用的请求已经完成,我希望显示警告。但是如果我点击某个链接,我就不想显示警报了。这是我的密码:

HTML:

代码语言:javascript
复制
<button id="ajax">Ajax</button>
<a href="#">link 1</a>
<a href="#">link 2</a>

<div></div>

联署材料:

代码语言:javascript
复制
$('#ajax').click(function() {
    $("div").load("/echo/js/?js=button");

    $( document ).ajaxStop(function() {
        alert('alert')
    });
})

$('a').click(function() {
    $("div").load("/echo/js/?js=link");
})

http://jsfiddle.net/rgyxzwj6/

为什么我点击按钮,然后点击一些链接,它会显示警报?在第一次单击按钮后,它只显示一次警报。但是如果我第二次点击这个按钮,它会显示两次警报。我怎么才能解决呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-07 22:27:13

1.执行警报

您应该使用jquery的回调函数来执行警报:

代码语言:javascript
复制
$('#ajax').click(function() {
    $("div").load("/echo/js/?js=button", function() {
        alert('alert');
    });
});

$('a').click(function() {
    $("div").load("/echo/js/?js=link");
});

回调函数 如果提供了“完整”回调,则在执行后处理和HTML插入之后执行该回调。对jQuery集合中的每个元素触发一次回调,然后依次将回调设置为每个DOM元素。

来自jquery和有关load():http://api.jquery.com/load/的更多信息

下面是为您的案例更新的小提琴:http://jsfiddle.net/55rpfe0w/

2. ajaxStop处理程序

你的密码..。

代码语言:javascript
复制
$( document ).ajaxStop(function() {
    alert('alert')
});

在使用链接处理...the请求时也会调用ajax事件处理程序。

每当Ajax请求完成时,jQuery都会检查是否还有其他未决的Ajax请求。如果没有保留,jQuery将触发ajaxStop事件。

来自jquery:https://api.jquery.com/ajaxStop/

3.多时间警报

在第一次单击按钮后,它只显示一次警报。但是如果我第二次点击这个按钮,它会显示两次警报。我怎么才能解决呢?

原因是,您在click函数中设置了事件ajaxStop的处理程序,每次单击按钮,就会设置另一个事件处理程序,因此:

此时将执行已在.ajaxStop()方法中注册的任何和所有处理程序。

来自jquery:https://api.jquery.com/ajaxStop/

票数 2
EN

Stack Overflow用户

发布于 2015-10-07 22:24:42

function completes.

如果不希望运行任何函数,则不必传递任何内容,就像在$('a').click函数中所做的那样。

http://jsfiddle.net/rgyxzwj6/1/

代码语言:javascript
复制
$('#ajax').click(function() {
    $("div").load("/echo/js/?js=button", function() {
      alert('alert');
    });
})

$('a').click(function() {
    $("div").load("/echo/js/?js=link");
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33003365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档