Mootools добавление html после запроса ajax - PullRequest
1 голос
/ 01 июля 2010

У меня есть вызов 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 добавить его в мой контейнер. Кто-нибудь хочет дать мне совет?

Спасибо

Ответы [ 4 ]

4 голосов
/ 30 июля 2010

Решение Dimitar близко, но это плохое решение, так как оно воссоздает все содержимое элемента и уничтожает подключенные обработчики событий. Лучшее решение было бы:

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

это фактически то, что внутренне делает Request.HTML.

1 голос
/ 02 июля 2010

.append не является допустимым прототипом элемента в mootools.

если вы хотите добавить html к существующему, то вы можете СДЕЛАТЬ .append действительным, определив в своем бите lib / core (я бы посчитал это, если вы его часто используете):

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

веселись :) 1009 *

0 голосов
/ 01 июля 2010

Если вы используете mootools 1.2.4, вы можете изменить Request на Request.HTML и использовать опцию append.(Не уверен, что опция добавления была в более старых версиях)

$('campaignType').addEvent('change', function(){
  new Request.HTML({
    method: 'get',
    url: '/admin/admin_' + $('campaignType').value + '.php',
    append: $('campaignForm')
  }).send();
});
0 голосов
/ 01 июля 2010

Я думаю, вам нравится использовать onSuccess вместо onComplete

...