返回另一个(相同)XMLHttpRequest的链接

我有一个链接可以创建一个ajax请求,并通过XHR请求打印另一个链接,然后在这个链接上绑定

所以它就像一个循环:

从XHR开始

<a href="javascript:void(0)" class="doXHR">do XHR</a>

比成Ajax成功函数我重复进入我的html这个链接:

<a href="javascript:void(0)" class="doXHR">do XHR</a>

但是当我通过以前的doHXR调用的成功函数输出相同的链接到html时,它不允许我做另一个(doXHR ajax调用)

所以如果我点击相同的链接,但从ajax生成相同的链接,它不允许我发送另一个(相同的)doXHR请求...:/

任何想法?

对不起,我的英语不好:P


在我看来,你为你的do XHR链接分配了一个事件监听器,并且它看起来像回调函数正在改变你提到的代码的链接。

这样做时,连接到该链接的原始事件侦听器已经消失,您将不得不重新附加它。 另一种可能性是使用jQuery的.live函数,该函数在绑定事件侦听器之后还会触发附加到DOM的元素上的事件:

$(".doXHR").live('click', function() {
  // Live handler called.
});

我不会删除链接,然后在执行Ajax请求时完全重新创建链接。 如果您只是直接使用XMLHttpRequest,我建议您查看一下jQuery Ajax文档,了解如何以jQuery方式执行此操作。

这样做是正确的

如果您需要阻止连续第二次点击链接以获得任何效果(直到请求完成,那就是),那么可以使用jQuery的.one()方法确保事件处理程序仅触发一次:

$(function() {
    function doAjax() {
        $.ajax({..., success: function() {
            // Do what you must to the HTML page

            // Allow the user to click again to make the request again
            $('.doXHR').one('click', doAjax);
        }, ...});
    }

    $('.doXHR').one('click', doAjax);
});

隐藏或更改链接的颜色

如果您希望网页充当在请求发生时移除链接的行为:

$('.doXHR').css('display', 'none'); // before Ajax request
$('.doXHR').css('display', ''); // after Ajax request

如果您只想使链接变灰,请使用:

$('.doXHR').css('color', 'gray'); // before Ajax request
$('.doXHR').css('color', ''); // after Ajax request

除了使用.one(...)绑定click事件处理程序之外。

链接地址: http://www.djcxy.com/p/51953.html

上一篇: Return link for another (same) XMLHttpRequest

下一篇: addEventListener firing twice