首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MooTools请求失败

MooTools请求失败
EN

Stack Overflow用户
提问于 2010-06-09 11:40:36
回答 2查看 1.1K关注 0票数 1

我正在尝试使用MooTools来完成这个任务。

描述:

我有三个按钮。myDiv外有两个按钮,myDiv内部有一个按钮。

单击这些按钮就会启动AJAX请求(将button变量传递给"button.php"),并根据响应文本更新myDiv内容。

因此,更新后,myDiv将显示Button3链接+显示已单击哪个按钮的消息。

问题:

一切看起来都很好,但是在几次点击之后,myDiv显示了loader.gif图像并停止了。在此之后,如果我稍等片刻,浏览器有时会停止工作(被阻塞)。

我注意到了IE6的这个问题。

有人能说出这个问题意味着什么吗?如果可以避免?

index.html

代码语言:javascript
复制
<html>
<head>
<script type="text/javascript" src="mootools/mootools-1.2.4-core-nc.js"></script>
<script type="text/javascript" src="mootools/mootools-1.2.4.4-more.js"></script>
<script type="text/javascript">
window.addEvent('domready', function() {
  $("myPage").addEvent("click:relay(a)", function(e) {
    e.stop();
    var myRequest = new Request({
      method: 'post',
      url: 'button.php',
      data: {
        button : this.get('id'), test : 'test'
      },
      onRequest: function() {
        $('myDiv').innerHTML = '<img src="images/loader.gif" />';
      },
      onComplete: function(response) {
        $('myDiv').innerHTML = response;
      }
    });
    myRequest.send();
  });
});
</script>
</head>
<body>
<div id="myPage">
  <a href="#" id="button1">Button1</a> 
  <a href="#" id="button2">Button2</a> 
  <div id="myDiv">
    <a href="#" id="button3">Button3</a>
  </div>
</div>
</body>
</html>

button.php

代码语言:javascript
复制
<a href="#" id="button3">Button3</a>
<br><br>
<?php echo 'You clicked ['.$_REQUEST['button'].']'; ?>
EN

回答 2

Stack Overflow用户

发布于 2010-06-09 19:06:15

嗯,代码本身没有什么问题。下面是你可以尝试做的事情:

  1. 使用onSuccess代替onCompleteconsole.log进行响应--检查是否有可疑的事情发生。也许您在某个时候得到了错误的响应,从而导致了IE上的JS错误(不尝试在内联元素中注入块元素,或者一些非语义的oddities?)
  2. Just,以防使用el.set('html', response)而不是el.innerHTML
  3. Check,如果Element.Delegation在某个时候没有迷路,那么
  4. 就在http://jsfiddle.net上创建一个工作示例,这样我们就可以使用代码并调试更多.

)。

票数 1
EN

Stack Overflow用户

发布于 2010-06-10 10:15:08

http://www.jsfiddle.net/dimitar/VZuGz/

工作得很好--注意,我添加了一个布尔值来存储单击状态--它一次只允许处理1个ajax请求,以防出现问题(请求排队)。

在某种程度上,这现在是同步的w/o是同步的。如果您必须记录每一次单击,无论速度有多快,您都可以使用http://mootools.net/docs/more/Request/Request.Queue,但禁用正在中继的元素的输出(可点击)。

附注:最近,我为mootools中的热图日志编写了一个类--它所做的类似于您所做的事情,请告诉我,如果您正在朝着这个方向前进,我将很乐意与您共享代码。

代码语言:javascript
复制
(function() {
    var clicked = false;    
    $("myPage").addEvent("click:relay(a)", function(e) {
        e.stop();
        if (clicked)
            return; // do 1 ajax at a time.

        new Request.HTML({
            method: 'POST',
            url: '/ajax_html_echo/',
            data: {
                button : this.get('id'), test : 'test',
                html: '<a href="#" id="button3">Button3</a><br><br>You clicked id ' + this.get("id")
            },
            onRequest: function() {
                $('myDiv').set("html", 'loading...');
                clicked = true;
            },
            onComplete: function() {
                $('myDiv').set("html", this.response.text);
                clicked = false;
            }
        }).send();
    });
})();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3005426

复制
相关文章

相似问题

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