2016-04-03 4 views
0

Projemde sonsuz kaydırmayı uygulamaya çalışıyorum. 3 sayfa index.php, ajax.php ve script.js dosyasını oluşturdum. Dizin iyi çalışıyor. Ajax.php verileri mysql veritabanından json formatında döndürüyor.Ajax kullanarak json verilerini yükleme (Uncaught TypeError: undefined öğesinin uzunluğunu okuyamıyor)

script.js ile ilgili sorun Kodlar aşağıda verilmiştir.

script.js:

$(window).scroll(function() { 
if($(window).scrollTop() + $(window).height() == $(document).height()){ 
     first = $('#first').val(); 
     limit = $('#limit').val(); 
     no_data = true; 
     if(flag && no_data){ 
      flag = false; 
      $('#loader').show(); 

      $.ajax({ 
       url : 'ajax.php', 
       dataType: "json", 
       type: 'post', 
       data: { 
        start : first, 
        limit : limit 
       }, 
       success: function(data) { 
        flag = true; 
        $('#loader').hide(); 

        if(data.count > 0){ 
         first = parseInt($('#first').val()); 
         limit = parseInt($('#limit').val()); 
         $('#first').val(first+limit); 
         $("#jc").append("<p>Test</p>"); 
         //$('#jc').append(); 
         $.each(data.content, function(key, value){ 
          alert(value.name); 
          //$("#jc").append("<p>Test1</p>"); 
          html +=value.name; 
          html += '<span class="month"><i class="fa fa-calendar"></i>'+value.name+'</span><p>&nbsp;</p>'; 
          html += '<p><a href="'+value.email+'" target="_blank">Demo </a></p>'; 
          html += '<p><a href="'+value.job_description+'" target="_blank">Tutorial </a></p>'; 


          html += '<p>'+value.mobile+'</p>'; 
          html += '</li>'; 
          $('#jc').append(html); 


         }); 

        }else{ 
         alert('No more data to show'); 
         no_data = false; 
        } 
       }, 
       error: function(data){ 
        flag = true; 
        $('#loader').hide(); 
        no_data = false; 
        alert('Something went wrong, Please contact admin'); 
       } 
      }); 
     } 


    } 
}); 

Çünkü ben uyarı etiketi koymak bundan sonra bu hat ile

`$.each(data.content, function(key, value){` 

sorun gibi görünüyor ama kovmuyorsun.

Json veri

{"count":2,"0":{"name":" Admin","email":"[email protected]","description":"We are looking json data. ","mobile":"123456789","newDate":"01-Apr-2016"},"1":{"name":"Raja","email":"[email protected]","description":"testing testing ","mobile":"43455435422","newDate":"31-Mar-2016"}} 

ben konsolda kontrol ve bu hata buldu. jquery-2.1.3.min.js:2 Uncaught TypeError: Cannot read property 'length' of undefined

cevap

2

Öncelikle $.each() sağ alert'ünüz önce sen data değil data.content üzerinde ilerlerken olmalıdır. data'da depolanan nesnenin bir content özelliği yoktur. Alert'ünüz 2 ait name özelliğini okumaya çalışıyor böylece

Ardından, data nesnesinde, ilk anahtar/değer çifti, "count":2 olduğunu. Yalnızca diğer anahtar/değer çiftlerinde, değerinizin name özelliğine sahip bir nesnedir.

Sen değer diyoruz denemeden önce name özelliğine sahip olduğunu kontrol deneyebilirsiniz: Cevabınız için

$.each(data, function(key, value){ 
    if (value.name) { 
     alert(value.name); 
    } 

    // etc. 
+0

teşekkürler. Oy verildi – Ironic

+0

Ayrıca hasOwnProperty, 'value.hasOwnProperty ('name')' kullanarak da kontrol edebiliriz. – sahil

+0

Çalıştı ancak undefined olarak ekstra json verileri alıyorum. Json db'den 2 kayıt döndürür, ancak html olarak yazdırdığımda fazladan kayıt alıyorum (udefined). – Ironic

İlgili konular