jQuery promise().done()
не работает. Ниже мой код:
<div id="testtesttest">gggggg</div>
<script type="text/javascript">
Event.observe(window, 'load', function() {
new Ajax.Request('testurl', {
method: 'get',
parameters: {
id: param
},
onSuccess: function() {
alert('success');
jQuery('div#testtesttest').html('teststring').promise().done(function() {
alert('afterpromise');
});
}
});
});
</script>
Он сообщает "success", заменяя "teststring" на "gggggg", но не предупреждая "afterpromise".
Я использую jquery-1.10.2.
Отредактировано: Исходный код
<?php if (!$this->getAttributeCode() || $this->getProduct()->getData($this->getAttributeCode())): ?>
<div id="<?php echo $this->getBlockId() ?>" class="lazyblocks-loader"> </div>
<script type="text/javascript">
Event.observe(window, 'load', function(){
new Ajax.Request('<?php echo $this->getUrl('lazyblocks/product/' . $this->getLazyAction()) ?>', {
method: 'get',
parameters: {
id: <?php echo $this->getProductId(); ?>
},
onSuccess: function(transport){
var data = transport.responseText;
var block = jQuery('#<?php echo $this->getBlockId() ?>')
block.removeClass('lazyblocks-loader');
if (data.isJSON()) {
var jsonData = data.evalJSON();
if (jsonData.html) {
block.html(jsonData.html).promise().done(function(){
block.find('img.lazy').jail({
id : 'page',
event : 'load+scroll',
loadHiddenImages: true,
offset : 10000
});
<?php echo $this->getChildHtml('lazyblocks.loader.oncomplete'); ?>
});
}
}
}
});
});
</script>
<?php endif; ?>
В чем может быть проблема?
html()
является синхронным, ему не нужен обратный вызов, обещание или что-то в этом роде. - person adeneo   schedule 10.06.2014.html()
является синхронным. - person Kevin B   schedule 10.06.2014$().promise
для объектов jQuery работает только для методов, выполняющих асинхронную работу, таких как анимация.$.html
не возвращает то, что можно превратить в обещание - person Juan Mendes   schedule 10.06.2014.promise()
для коллекции без активной анимации возвращает обещание разрешено. Код спрашивающего должен работать. - person Frédéric Hamidi   schedule 10.06.2014done
должен работать. Может быть, слишком рано, но все же следует. Если это не так, проблема может исходить откуда-то еще. - person Frédéric Hamidi   schedule 10.06.2014