2013-04-18 18 views
5

, ben olarak karıştı:jQuery Ajax, tanınmayan ifade Veri sözdizimi hatası alın: Bu kod neden çalışmıyor son jQuery (1.9.0) kullanarak

$.testAjaxFilter = function() { 

    var base = this; 

    // get faq categories 
    var currentFaqCategories = $('#category-list ul li a'); 

    // loop through each faq category link and bind a click event to each 
    if (typeof currentFaqCategories !== 'undefined') { 

     $.each(currentFaqCategories, function(index, category) { 

      $(category).click(function(e) { 
       $(e.target).getFaqList(); 
       return false; 
      }); 

     }); 

    } 

    // GET faq list elements from category link 
    $.fn.getFaqList = function() { 

     $.get($(this[0]).attr('href'), function(data) { 

      base.addFaqSectionToPage($(data).find('section.faq-page #content-column')); 

     }); 

    }; 

    // add new faq section to current page 
    this.addFaqSectionToPage = function(faqSection) { 

     // remove old faq section 
     var currentFaqSection = $('section.faq-page #content-column'); 

     currentFaqSection.empty(); 
     currentFaqSection.append(faqSection); 

    }; 

}; 

$.testAjaxFilter(); 

birini tıklayarak üzerine, konsol görüntülerken kategori bağlantılarından GET, yanıtın tamamı boyunca tüm sayfayı alır, ancak daha sonra bir Sözdizimi hatası, tanınmayan ifade ile takip edilir: (tüm HTML'yi alınan sayfadan listeler). Yani, $.fn.getFaqList'da bir şeyler yanlış gidiyor, muhtemelen $(data) kullanımı?

Yanlış yaptığım belli bir şey var mı? Herhangi bir yardım büyük takdir edilecektir. AJAX şeyler ile çok meraklı değilim.

+0

bir .find ('a') Do – karthikr

+5

Eğer '$ deneyebilirsiniz 1.8+ kullanıyorsanız ($. ParseHTML (veri)). Find' – Musa

+0

Teşekkür Musa! Bu yaptı! Bunu soruma ekleyeceğim. – beefchimi

cevap

10

teşekkürler. Ben doğru cevap olarak hediye etmek istiyoruz ... ama yerine zorunda ben bir açıklama :(

için bunu yapamaz sanırım: bununla

$(data).find 

:

$($.parseHTML(data)).find 

Diğer Stackoverflow cevaplarına dayanarak daha önce benzer bir şey denedim, ancak bu hataya devam etmem için düzgün bir şekilde yürütmüyordum. Bu konuda daha fazla netliğe ihtiyaç duyan herkes için şu yanıtlar yardımcı olabilir:

JQuery unrecognized expression on Ajax response

jQuery + client-side template = "Syntax error, unrecognized expression"

+0

'$ ($. ParseHTML (veri)) '' benim için çalıştım '' ... –

+0

Çok İyi İş çalışıyor! –

0

sözdizimi hatası burada olabilir:

if (typeof currentFaqCategories !== 'undefined') { 

okumalısınız hangisi: bu işaret için Musa ile

if (typeof currentFaqCategories != 'undefined') { 
+0

Her ikisi de geçerli işleçlerdir. Sadece farklı şeyler yaparlar. – shishirmk