Javascript Mootools在ajax请求后追加html

Javascript Mootools在ajax请求后追加html,javascript,ajax,mootools,mootools-events,Javascript,Ajax,Mootools,Mootools Events,我有一个类似这样的ajax调用 $('campaignType').addEvent('change', function(){ alert($('campaignType').value); var request = new Request({ method: 'get', url: '/admin/admin_' + $('campaignType').value + '.php', onRequest:function() { alert('Re

我有一个类似这样的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附加到我的容器中。有人愿意给我一些建议吗


谢谢

我想你喜欢使用onSuccess而不是onComplete

我想你喜欢使用onSuccess而不是onComplete

如果你使用的是mootools 1.2.4,你可以将Request改为Request.HTML并使用append选项。不确定append选项是否在旧版本中

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

如果您使用的是mootools 1.2.4,您可以将Request更改为Request.HTML并使用append选项。不确定append选项是否在旧版本中

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

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

如果您想将HTML附加到现有的HTML中,那么您可以通过定义站点中的LIb/Cype位来实现。

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);

玩得开心:

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

如果您想将HTML附加到现有的HTML中,那么您可以通过定义站点中的LIb/Cype位来实现。

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);

玩得开心:

Dimitar的解决方案很接近,但它是一个糟糕的解决方案,因为它会重新创建整个元素内容并销毁附加的事件处理程序。更好的解决办法是:

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

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

Dimitar的解决方案很接近,但它是一个糟糕的解决方案,因为它会重新创建整个元素内容并销毁附加的事件处理程序。更好的解决办法是:

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

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

对于复制粘贴程序,请在第二行末尾添加一个{。感谢您提供的示例如果您使用事件委派,则不存在事件处理程序问题。对于复制粘贴程序,请添加一个{{到第二行的末尾。感谢您提供的示例。如果您使用事件委派,则事件处理程序问题不存在。