2013-04-18 29 views
5

Stosując najnowsze jQuery (1.9.0), jestem zdezorientowany, dlaczego ten kod nie działa:jQuery Ajax Get błąd danych składni, nierozpoznany wyrażenie:

$.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(); 

Podczas oglądania konsolę, po kliknięciu jednego linków kategorii, GET pobiera całą stronę w odpowiedzi, ale po niej następuje błąd składniowy, nierozpoznane wyrażenie: (wyświetla cały kod HTML z pobranej strony). Coś jest nie tak z $.fn.getFaqList, ewentualnie z użyciem $(data)?

Czy jest coś oczywistego, że robię źle? Każda pomoc będzie bardzo ceniona. Nie jestem zbyt bystry z materiałami AJAX.

+0

Wykonaj .find ('A') – karthikr

+5

Jeśli jesteś na 1.8+ można spróbować '$ ($. ParseHTML (dane)). Find' – Musa

+0

Dzięki Musa! Tak to zrobiło! Dodam to do mojego pytania. – beefchimi

Odpowiedz

10

Dzięki Musa dla wskazując na to. Chciałbym zapłać za prawidłową odpowiedź ... ale myślę, że nie może tego zrobić komentarza :(

musiałem wymienić:

$(data).find 

z tym:

$($.parseHTML(data)).find 

Próbowałem już coś podobnego wcześniej, na podstawie innych odpowiedzi Stackoverflow, ale nie wykonałem go prawidłowo, więc ciągle dostaję błąd. Dla każdego, kto potrzebuje większej jasności w tej kwestii, te odpowiedzi mogą pomóc:

JQuery unrecognized expression on Ajax response

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

+0

'$ ($ .parseHTML (dane)). Find' pracował dla mnie ... –

+0

Działa bardzo dobrze! –

0

Błąd składni może być tutaj:

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

Który powinien brzmieć:

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

Obie są poprawnymi operatorami. Po prostu robią różne rzeczy. – shishirmk