2013-04-18 5 views
5

die neueste jQuery (1.9.0), ich bin verwirrt, warum dieser Code nicht funktioniert:jQuery Ajax Get Data Syntaxfehler, nicht erkannte Äußerung:

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

Während die Konsole sehen, auf einem Klick Von den Kategorie-Links ruft das GET die gesamte Seite in seiner Antwort ab, aber dann folgt ein Syntaxfehler, unerkannter Ausdruck: (listet alle HTML-Seiten von der abgerufenen Seite auf). Also, etwas läuft schief in $.fn.getFaqList, möglicherweise die Verwendung von $(data)?

Ist irgendetwas offensichtliches falsch? Jede Hilfe würde sehr geschätzt werden. Ich bin nicht sehr versiert mit AJAX-Sachen.

+0

ein .find Do ('a') – karthikr

+5

Wenn Sie auf 1.8+ können Sie versuchen, '$ ($. ParseHTML (Daten)). Find' – Musa

+0

Dank Musa! Das hat es geschafft! Ich werde das zu meiner Frage hinzufügen. – beefchimi

Antwort

10

Dank Musa für diesen Hinweis. Ich würde Sie als die richtige Antwort belohnen ... aber ich denke ich nicht, dass, um einen Kommentar tun :(

ich zu ersetzen hatte:

$(data).find 

mit diesem:

$($.parseHTML(data)).find 

Ich habe zuvor anhand von anderen Stackoverflow-Antworten etwas Ähnliches versucht, aber ich habe es nicht ordnungsgemäß ausgeführt, daher habe ich den Fehler erhalten. Für alle, die mehr Klarheit über das Problem benötigen, können diese Antworten hilfreich sein:

JQuery unrecognized expression on Ajax response

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

+0

'$ ($. ParseHTML (Daten)). Find' arbeitete für mich ... –

+0

Es funktioniert sehr gut! –

0

Die Syntaxfehler könnte hier sein:

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

Welche sollte lauten:

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

Beide sind gültige Operatoren. Sie machen nur verschiedene Dinge. – shishirmk