2016-12-18 1 views
0

Mein jQuery-Code, der den Fehler verursacht, ist:Uncaught Auslöser Range: Maximale Call-Stack-Größe überschritten in jQuery

$.post($("#list").attr('action'), data, function(json) 
{ 
    if(json.listArr.length>0) 
    { 
     $.each(json.listArr, function() { 
      var $tr = $('<tr>', { 
       class : "catHead", 
      }); 
      var $td = $('<td>', { 
       colspan : 11, 
       text : this.category 
      }); 
      $("#listDB").append($tr.append($td)); 

      $.each(this.value, function() { 
       var $tr = $('<tr>',{ 
        class : "data" 
       }); 

       var $td = $('<td>', { 
        html : '<input type="checkbox" id="selected[]" value="'+this.id+'" name="selected[]" /></td>' 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.id 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.catCount 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.shop 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.item 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.qnty 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.unit 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.price_based_on 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.mrp 
       });$tr.append($td); 
       $td = $('<td>', { 
        text : this.sellers_price 
       });$tr.append($td); 

       var formattedDate = new Date(this.last_updated_on); 
       var d = formattedDate.getDate(); 
       var m = formattedDate.getMonth(); 
       m += 1; // JavaScript months are 0-11 
       var y = formattedDate.getFullYear(); 
       var date = (d<10?"0":"")+d+"-"+(m<10?"0":"")+m+"-"+y; 
       $td = $('<td>', { 
        text : date 
       });$tr.append($td); 

       $("#listDB").append($tr); 
      }); 
     }); 
    } 
},"json"); 

Nach vielen anderen Fragen eine Ähnlichkeit mit dem Namen dieser Frage trägt, sollte ich suchen out zwei Funktionen, die sich gegenseitig aufrufen. Ich habe jedoch begonnen, Abschnitte (meines gesamten Codes, von denen dieser Auszug ein Teil ist) zu löschen, um den Problemabschnitt (das) zu finden, und er enthält nur eine Funktion. Für das Leben von mir kann ich nicht zwei Funktionen finden, die sich gegenseitig rekursiv aufrufen. Also, was verursacht diesen Fehler?

Hier ist ein Teil der JSON-Daten:

{ 
    "listArr": [ 
    { 
     "category": "Fruits", 
     "value": [ 
     { 
      "id": "127", 
      "catCount": "1", 
      "shop": "More", 
      "item": "Apples", 
      "qnty": "1", 
      "unit": "kg", 
      "price_based_on": "Kilos", 
      "mrp": "90.00", 
      "sellers_price": "90.00", 
      "last_updated_on": "2016-12-03" 
     }, 
     { 
      "id": "128", 
      "catCount": "2", 
      "shop": "More", 
      "item": "Oranges (Nagpur)", 
      "qnty": "1", 
      "unit": "Piece", 
      "price_based_on": "Piece", 
      "mrp": "8.00", 
      "sellers_price": "8.00", 
      "last_updated_on": "2016-12-03" 
     } 
     ] 
    } 
    ] 
} 

Hoffe, es hilft!

+1

Während dies keine Antwort ist, möchten Sie vielleicht wirklich eine Vorlage Rahmen betrachten wie Lenker für so etwas, könnten Sie es in viel weniger, lesbarer und testbarer Code tun. –

+0

@DarrenSweeney könnten Sie diesen Code mit diesem Framework umschreiben? –

+0

Yeah leicht, und verwenden Sie etwas wie Moment. js, um all das date stuff wahrscheinlich in eine Zeile zu verdichten - lies es und probiere es aus und komm zurück, wenn du nicht weiterkommst –

Antwort

0

Gelöst es.

Ich habe versucht, Daten an den Server zu senden, der noch nicht existierte. Wie das einen solchen Fehler verursacht hat, ist mir nicht bekannt.

Alles, was ich zu tun war notwendig, um die Zeile einzufügen:

var data = $("#list :input").serialize(); 

vor dem Senden der Daten verwendet:

$.post($("#list").attr('action'), data, function(json) 
Verwandte Themen