2009-08-16 3 views
2

У меня есть этот вызов ajax для загрузки набора данных в xml.Загрузка AJAX с JQuery Issue

Я не получаю никаких ошибок JS, он делает это до того, что все не работает, я думаю, что я неправильно вызываю данные.

Любые мысли о том, что я делаю неправильно в полном цикле функций?

$.ajax({ 
    type: "GET", 
    url: "xml/classes.xml", 
    dataType: "XML", 
    beforeSend: function(){ 
    $('#classContainer').append("<p>Loading</p>");}, 
    complete: function() { 
    $(this).find('monday').each(function(){ 

      var $classdate = $(this); 
      var title = $classdate.find("class").attr('title'); 

      var level = $classdate.find("class").attr('classLevel'); 
      var time = $classdate.find("time").text(); 
      var duration = $classdate.find("time").attr("duration"); 
      var hourofday = $classdate.find("time").attr("hourofday"); 
      var location = $classdate.find("location").text(); 



      var Monhtml = '<div class="classBlock">'; 

      Monhtml += '<p class="title">' + title + '<span class="loadingPic" alt="Loading" /> ' + ' </p>'; 
      Monhtml += '<p class="infoBar"> <strong>Time:</strong>' + time + '<span class="hour">'+ hourofday +'</span><br>'+'<strong>Duration:</strong>' + duration +'&nbsp;Minutes <br>' + '<strong>Location:</strong>' + location + '<br><strong>Instructor:</strong> </p>'; 
      Monhtml += '<p class="description"> <span class="level">' + level + '</span></p>' ; 

      Monhtml += '</div>'; 


      $('#classContainer').append($(Monhtml)); 
     }); 
     } 
    }); 
}); 

Изменено Полный к:

success: function(xml) { 
    $(xml) 

И он загружает, Что разница?

ответ

1

Ваш запрос не распространяется на полную функцию. Попробуйте это:

$.ajax({ 
    type: "GET", 
    url: "xml/classes.xml", 
    dataType: "XML", 
    beforeSend: function(){ 
    $('#classContainer').append("<p>Loading</p>");}, 
    complete: function(resp) { 
    $(resp).find('monday').each(function(){ 

      var $classdate = $(this); 
      var title = $classdate.find("class").attr('title'); 

      var level = $classdate.find("class").attr('classLevel'); 
       var time = $classdate.find("time").text(); 
       var duration = $classdate.find("time").attr("duration"); 
       var hourofday = $classdate.find("time").attr("hourofday"); 
       var location = $classdate.find("location").text(); 



      var Monhtml = '<div class="classBlock">'; 

      Monhtml += '<p class="title">' + title + '<span class="loadingPic" alt="Loading" /> ' + ' </p>'; 
       Monhtml += '<p class="infoBar"> <strong>Time:</strong>' + time + '<span class="hour">'+ hourofday +'</span><br>'+'<strong>Duration:</strong>' + duration +' Minutes <br>' + '<strong>Location:</strong>' + location + '<br><strong>Instructor:</strong> </p>'; 
       Monhtml += '<p class="description"> <span class="level">' + level + '</span></p>' ; 

      Monhtml += '</div>'; 


      $('#classContainer').append($(Monhtml)); 
     }); 
     } 
    }); 
}); 
+0

Это не работает Я также попытался данные. – matthewb

+0

Попробуйте $ (соответственно) .find ... Вместо этого. Я не могу полностью ответить прямо сейчас из iphone – karim79

+0

@mathewb - извините за задержку, разница в том, что после того, как ответ был завернут в объект jQuery, вы можете вызвать на нем методы jQuery. Я отразил предложение, которое я сделал в своем последнем комментарии в своем ответе. – karim79

0

полного обратного вызова получает передается два аргумента.

Из документации Jquery

функции будет вызван, когда заканчивается запрос (после успеха и ошибок обратных вызовов выполняются). Функция получает два аргумента: объект XMLHttpRequest и строку, описывающую тип успеха запроса. Это событие Ajax.

функция (XMLHttpRequest, textStatus) { это; // опции для этого запроса ajax }