2010-02-22 7 views
0

Pourquoi une erreur de syntaxe m'arrive-t-elle?Pourquoi ai-je une erreur de syntaxe (JavaScript) en essayant de faire une pagination?

$(document).ready(function() { 
    $.post(some_url + "ajax/get_matching_products", { 
     user_id : user_id_hash, 
     url : user_page_url 
    }, function(data) { 
     var callback = eval("(" + data + ")"); 
     //alert(callback.output); 
     if(callback.result == 1) { 
      $("#something").prepend(callback.output); 
     } 
    }); 


    /* 
    * PAGINATION 
    */ 
    $.fn.paginate = function(options) { 
     var options = jQuery.extend({ 
      content: 'TBODY TR', 
      limit: 20 
     },options); 

     return this.each(function() { 

      var page = {}; 
      page.parent = $(this), 
      page.content = (page.parent.is('TABLE')) ? page.parent.find(options.content) : page.parent.children(options.content), 
      page.total = Math.ceil(page.content.size()/options.limit), 
      page.display = page.content.css('display'), 
      page.prev = 0, 
      page.next = 2; 

      page.content.slice(options.limit).css('display', 'none').addClass('ui-helper-hidden'); 

      $(document.createElement("DIV")).addClass("link-container")[(page.parent.is('TABLE')) ? 'insertAfter' : 'appendTo'](this); 

      page.linkContainer = (page.parent.is('TABLE')) ? page.parent.next('.link-container:first') : page.parent.find('.link-container:first'); 

      $(document.createElement("A")).addClass("pagination-link previous ui-state-default").attr('href', 'previous').attr('title', 'Previous page').attr('rel', 'nofollow').text('<').appendTo(page.linkContainer); 

      for(var num=0; num < page.total; num++){ 
       var offset = num + 1, 
         min = (offset * options.limit) - (options.limit), 
         max = (offset * options.limit); 

       $(document.createElement("A")).addClass("pagination-link numeric ui-state-default").attr('href', offset).attr('title', 'Page '+offset+'').attr('rel', 'nofollow').text(offset).appendTo(page.linkContainer); 

       page[offset] = page.content.slice(min, [max]); 
      }; 

      $(document.createElement("A")).addClass("pagination-link next ui-state-default").attr('href', 'next').attr('title', 'Next page').attr('rel', 'nofollow').text('>').appendTo(page.linkContainer); 

      page.wraps = page.linkContainer.find('.paginationWrap'); 
      page.anchors = page.linkContainer.find('A'); 

      page.anchors.bind('mouseenter mouseleave', function(e){ 

       this.self = $(this); 
       (e.type === 'mouseenter') ? this.self.addClass('ui-state-hover') : this.self.removeClass('ui-state-hover'); 
      }).eq(1).addClass('ui-state-active'); 

      page.anchors.bind('click', function(e){ 
       e.preventDefault(); 

       if($(this).is('.ui-state-active')){ 
         return false; 
       } 

       this.siblings = $(this).siblings('.ui-state-active:first'); 

       if($(this).is('.previous')) { 

         if(page.prev === 0){ 
          return false; 
         }; 

         this.link = $(this).siblings('A[href= ' + page.prev + ']'); 
         this.link.add(this.siblings).toggleClass('ui-state-active'); 

         page.content.css('display', 'none').addClass('ui-helper-hidden'); 
         page[page.prev].css('display', page.display).removeClass('ui-helper-hidden'); 

         page.prev--, 
         page.next--; 

        } else if($(this).is('.next')) { 

         if(page.next === (page.total + 1)){ 
          return false; 
         }; 

         this.link = $(this).siblings('A[href= ' + page.next + ']'); 
         this.link.add(this.siblings).toggleClass('ui-state-active'); 

         page.content.css('display', 'none').addClass('ui-helper-hidden'); 
         page[page.next].css('display', page.display).removeClass('ui-helper-hidden'); 

         page.prev++, 
         page.next++; 

       } else { 

         this.link = $(this); 
         this.link.add(this.siblings).toggleClass('ui-state-active'); 

         this.offset = parseInt(this.link.attr('href')); 

         page.content.css('display', 'none').addClass('ui-helper-hidden'); 
         page[this.offset].css('display', page.display).removeClass('ui-helper-hidden'); 

         page.prev = this.offset - 1, 
         page.next = this.offset + 1; 
       } 

      }); 
      return this; 
     }); 
    }; 
}); 

Est-ce que l'aide pour trouver l'erreur?

erreur JavaScript: « clients/blabla/quelque chose/js/widget.js: (275): erreur html: impossible de trouver fin de balise script


Firebug donne cette erreur:

erreur de syntaxe $ (function()); \ n

Sur elle possède les deux parties fonctionne bien si je mets le contenu factice/statique aux tables, les travaux aswell pagination. mais quand ceux-ci ensemble, il me donne cette erreur:/

+3

Veuillez décomposer le code pour les parties pertinentes, personne ne va passer par tout cela. –

+0

bien le problème est que je ne sais pas où le problème est, alors comment puis-je le déshabiller? – adad1

+1

J'ai abandonné la mise en forme du code, il y a des parenthèses inégalées dans les premier et deuxième paragraphes des codes, le reste n'a pas été vérifié. – YOU

Répondre

2

aurait dû lire plus du contexte de code, la virgule est valide où il est.

avec

var callback = eval("(" + data + ")"); 

quelle est la valeur des données?

+0

C'est aussi les cinq lignes suivantes. Ils ont tous la même erreur. –

+0

La virgule est un séparateur d'instructions JavaScript valide et ne déclencherait pas d'erreur de syntaxe. Cela ne ferait que renvoyer une erreur si un certain mot-clé suivait la virgule, comme 'return',' continue', 'break', etc. Bien que, généralement, il ne soit utilisé que pour les instructions de bloc telles que' if' ou 'for' sans utilisant des accolades d'ouverture/fermeture. –

+0

+1, je suis arrivé à la même conclusion sur l'utilisation de 'eval()' mais j'ai remarqué que vous aviez déjà édité votre réponse :-) –

1

Put the text in the jslint page et vous obtiendrez une réponse.

+0

JSLint ne montre pas l'erreur, probablement parce qu'elle se produit dans le 'eval()' déclaration. –

+0

sur cette propriété fonctionne aussi bien si je mets du contenu factice/statique aux tables, la pagination fonctionne aussi. mais quand ceux-ci ensemble cela me donne cette erreur: / – adad1

Questions connexes