5 votes

jQuery Ajax Get Data Erreur de syntaxe, expression non reconnue :

En utilisant la dernière version de jQuery (1.9.0), je ne comprends pas pourquoi ce code ne fonctionne pas :

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

Dans la console, lorsque l'on clique sur l'un des liens de catégorie, le GET récupère la page entière dans sa réponse, mais il est ensuite suivi d'une erreur de syntaxe, expression non reconnue : (liste de tout le HTML de la page récupérée). Il y a donc quelque chose qui ne va pas dans $.fn.getFaqList éventuellement l'utilisation de $(data) ?

Y a-t-il quelque chose d'évident que je fais mal ? Toute aide serait grandement appréciée. Je ne suis pas très calé en matière d'AJAX.

10voto

beefchimi Points 1242

Merci à Musa de l'avoir signalé. Je vous récompenserais bien comme étant la bonne réponse... mais je suppose que je ne peux pas le faire pour un commentaire :(

J'ai dû le remplacer :

$(data).find

avec ça :

$($.parseHTML(data)).find

J'avais déjà essayé quelque chose de similaire, en me basant sur d'autres réponses de Stackoverflow, mais je ne l'exécutais pas correctement et je continuais à obtenir l'erreur. Pour tous ceux qui ont besoin de plus de clarté sur le problème, ces réponses pourraient vous aider :

Expression non reconnue par JQuery sur la réponse Ajax

jQuery + modèle côté client = "Syntax error, unrecognized expression" (erreur de syntaxe, expression non reconnue)

0voto

spadelives Points 478

L'erreur de syntaxe pourrait se trouver ici :

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

Qui devrait être lu :

if ( typeof currentFaqCategories != 'undefined') {

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X