سؤال

ولقد وضعت السيناريو موتولز التالي

 window.addEvent('domready', function() {
    var shouts = "timed.php";
    var log = $('log_res');
    function updateData (url,target)
    {
        new Ajax(url,{
        method: 'get', 
        update: $(target), 
        onComplete: function() {
        log.removeClass('ajax-loading');}  }).request();
        log.empty().addClass('ajax-loading');
    }

    var update = function(){ updateData ( shouts, 'log_res' ); };
    update();           // call it immediately
    update.periodical(10000);   // and then periodically

 });

وهيريس أتش تي أم أل

<div id="AJAX">
    <h3>Ajax Response</h3>
    <div id="log_res">exercise</div>
</div>

ووذلك باستخدام مو 1.1.

ما سبق يعمل بشكل جيد، تحميل الصفحة ثم طلب اياكس جزاء في log_res معرف شعبة لديها فئة من اياكس التحميل في حين تحديثها، وعند الانتهاء لها يتم استبدال ممارسة النص في شعبة مع أيا كان اياكس قد عاد ( ييب). ولكن أريد أن أضع بعض HTML مخصصة في شعبة حين أن الصفحة يتم تحميل، لأن فئة اياكس التحميل ليست كافية لاحتواء المعلومات، وأريد أيضا لوضع المتعري spinny في شعبة بينما طلب اياكس واسترجاع المعلومات . نأمل أن معنى!

هل كانت مفيدة؟

المحلول

ومع موتولز 1.2، وهذا يعمل على النحو المطلوب:

function updateData (url, target)
{
  var target = $(target);
  target.empty().addClass('ajax-loading');
  target.innerHTML = "Loading...";
  new Request({
    url: url, 
    method: 'get',
    onComplete: function(responseText) {
      target.removeClass('ajax-loading');
      target.innerHTML = responseText;
    }
  }).send();
}

ومنذ كنت لا متعة واستخدام موتولز 1.1، لا بد لي من حفر قليلا ... في الواقع، انها حصلت على العمل باستخدام تقريبا نفس الإعداد لديك (لاحظ يمكنني استخدام target بدلا من log، والذي تم تحديده خارج نطاق هذه الوظيفة):

function updateData (url, target)
{
  var target = $(target);
  target.empty().addClass('ajax-loading');
  target.innerHTML = "Loading...";
  new Ajax(url, {
    method: 'get',
    update: target,
    onComplete: function() {
      target.removeClass('ajax-loading');
    }
  }).request();
}

نصائح أخرى

ويمكن أن لا تفعل شيئا من هذا القبيل:

function updateData (url, target)
{
  var target = $(target);
  target.innerHTML = 'Please wait...';

  //and the rest of the function
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top