2016-06-09 8 views
0

Ich habe ein Problem, ein Datum in variablen Daten nach getJSON zu tragen .. unten ist mein Codewie tragen Daten nach getJSON

function format (d) { 
    var id = d[1],$base = '<?php echo Routed::url('/api/course_fees_setup/getSponsorList?'); ?>'; 
    var rows = ''; 
    $.getJSON($base+'id=' + id,function(data){ 
     var index =0; 
     var newOptions = data.data; 
     var SponsorbyFee = newOptions.Sponsorship[0].SponsorbyFee; 
     $.each(SponsorbyFee, function(value,key) { 
      // console.log(key); 
      switch(key['fee_type_id']){ 
      case '1' : 
        // console.log('program'); 
        break; 
      case '2' : 
        // console.log(key['OthersFee']); 
        rows[index] = '<tr><td>' + key['OthersFee']['payment_description'] + '</td><td>' + key['OthersFee']['price'] + '</td><td>' + key['OthersFee']['remarks'] + '</td><tr>'; 
        index++; 
        break; 
      case '3' : 
        // console.log(key['DiscountFee']); 
        rows[index] = '<tr><td>' + key['DiscountFee']['payment_description'] + '</td><td>' + key['DiscountFee']['price'] + '</td><td>' + key['DiscountFee']['remarks'] + '</td><tr>'; 
        index++; 
        break; 
      } 
     }); 
    }); 
    return '<br /><br /><table id="sponsorlist-tbl" class="hover cell-border" width="100%">'+ 
        '<thead>'+ 
          '<tr>'+ 
           '<th width="30%">Payment Description</th>'+ 
           '<th width="10%">Price</th>'+ 
           '<th width="30%">Remarks</th>'+ 
          '</tr>'+ 
        '</thead>'+ 
        '<tbody>'+ 
         rows + 
        '</tbody>'+ 
       '<table><br /><br /><br />'; 
} 

I Daten in Zeile 36 Variable zurückkehren will, sobald ich Schleife abgeschlossen Meine Zeilen in Zeile 16. Aber es scheint, als ob es null zurückgibt. Jemand kann mir helfen, meinen Code zu korrigieren, da ich gerade über generate table in jquery studiere. Jede Hilfe wird sehr zu schätzen wissen. Danke Jungs

+1

Was ist 'Format' Funktion zurückgegeben? – guest271314

+0

im Array .. unten ist der Prozess zur Funktion => row.child (format (row.data())) .show(); if (idx === -1) { detailRows.push (tr.attr ('id')); } – art

Antwort

1

$.getJSON() gibt Ergebnisse asynchron zurück. Sie können html string und data von innerhalb $.getJSON() Anruf nach $.each() zurückgeben; Verwenden Sie .then(), um Ergebnisse zu verarbeiten

function format (d) { 
    var id = d[1],$base = '<?php echo Routed::url('/api/course_fees_setup/getSponsorList?'); ?>'; 
    var rows = ''; 
    return $.getJSON($base+'id=' + id) 
    .then(function(data){ 
     var index =0; 
     var newOptions = data.data; 
     var SponsorbyFee = newOptions.Sponsorship[0].SponsorbyFee; 
     $.each(SponsorbyFee, function(value,key) { 
      // console.log(key); 
      switch(key['fee_type_id']){ 
      case '1' : 
        // console.log('program'); 
        break; 
      case '2' : 
        // console.log(key['OthersFee']); 
        rows[index] = '<tr><td>' + key['OthersFee']['payment_description'] + '</td><td>' + key['OthersFee']['price'] + '</td><td>' + key['OthersFee']['remarks'] + '</td><tr>'; 
        index++; 
        break; 
      case '3' : 
        // console.log(key['DiscountFee']); 
        rows[index] = '<tr><td>' + key['DiscountFee']['payment_description'] + '</td><td>' + key['DiscountFee']['price'] + '</td><td>' + key['DiscountFee']['remarks'] + '</td><tr>'; 
        index++; 
        break; 
      } 
     }); 
     return ['<br /><br /><table id="sponsorlist-tbl" class="hover cell-border" width="100%">'+ 
        '<thead>'+ 
          '<tr>'+ 
           '<th width="30%">Payment Description</th>'+ 
           '<th width="10%">Price</th>'+ 
           '<th width="30%">Remarks</th>'+ 
          '</tr>'+ 
        '</thead>'+ 
        '<tbody>'+ 
         rows + 
        '</tbody>'+ 


     '<table><br /><br /><br />' 
     , data]; 
    }); 

} 

format(/* parameter */).then(function(results) { 
    console.log(results) 
}) 
+1

plnrr http://plnkr.co/edit/Fo8HcC7kjALH1dErbozw ?? p=preview – guest271314

+0

scheint, als ob es immer noch nicht die Daten tragen. Wenn ich versuche, console.log() das Ergebnis zeigt es so etwas wie "

Zahlungs-Beschreibung Preis Erläuterungen




"<< innen tbody ist leer – art

+1

@art Was ist Zweck der Definition von 'Zeilen' als String bei' var rows = ''; ', obwohl sie scheinbar als Array verarbeitet werden? Wird erwartet, dass Zeilen eine Zeichenfolge oder ein Array sind? – guest271314