2010-07-01 86 views
1

我有一个Ajax调用看起来像这样后追加HTML,Mootools的Ajax请求

$('campaignType').addEvent('change', function(){ 
    alert($('campaignType').value); 
    var request = new Request({ 
    method: 'get', 
    url: '/admin/admin_' + $('campaignType').value + '.php', 
    onRequest:function() { 
    alert('Request has been made, please be patient') 
    }, 
    onComplete:function(response) { 
    $('campaignForm').append(response); 
    } 
    }).send(); 
}); 

取决于什么是从另一个返回的`$(“campaignType”)一些HTML的价值本质上发生了什么文件,但是我似乎无法获得HTML附加到我的容器。任何人都在意给我一些建议?

感谢

回答

0

我想你想如果你使用的mootools 1.2.4使用onSuccess代替onComplete

0

你可以改变RequestRequest.HTML和使用append选项。 (不知道这追加的选择是在旧版本)

$('campaignType').addEvent('change', function(){ 
    new Request.HTML({ 
    method: 'get', 
    url: '/admin/admin_' + $('campaignType').value + '.php', 
    append: $('campaignForm') 
    }).send(); 
}); 
1

.append不是mootools的有效元素的原型。

如果要追加的HTML到现有的一个,那么你也可以制作.append在您的网站的lib /核心位定义有效(我会考虑这一点,如果你经常使用它):

Element.implement({ 
    append: function(newhtml) { 
     // silly name, does not say to me you are appending html. rename to appendHTML 
     return this.set("html", this.get("html") + newhtml); 
    } 
}); 

或在您的onComplete做:

var cf = $('campaignForm'); 
cf.set("html", cf.get("html") + this.response.text); 

玩得开心:)

4

贝尔巴托夫的解决方案是接近,但一个坏的解决方案,因为它再现了全元素含量和破坏附加事件处理程序。更好的解决方案是:

Element.implement({ 
    append: function(newhtml) { 
     return this.adopt(new Element('div', {html: newhtml}).getChildren()); 
    } 
}); 

这实际上是Request.HTML内部所做的。

+0

对于复制粘贴,在第二行的末尾添加一个{。 感谢您的示例 – 2012-06-20 09:55:50

+0

感谢您的注意,修复。 – gonchuki 2012-06-21 17:49:26

+0

如果您使用事件委托,事件处理程序问题不存在。 – 2013-11-25 16:30:44