2010-12-27 2 views
0
{"paging": 
    {"pageNum":2, 
    "action":"Next", 
    "type":"", 
    "availableCacheName":"getAllFunds", 
    "selectedCacheName":"", 
    "showFrom":101, 
    "showTo":200, 
    "totalRec":289, 
    "pageSize":100}, 

"Data": [{"sourceCodeId":0, 
      "radio_fund":"individual", 
      "availableFunds":[], 
      "fundId":288, 
      "searchName":[], 
      "fundName":"Asian Equity Fund A Class Income", 
      "srcFundGrpId":"PGI", 
      "firstElement":0, 
      "lastElement":0, 
      "totalElements":0, 
      "pageList":[], 
      "standardExtract":true}] 
} 

Je fichier JSON avec le format ci-dessus avec deux fileds, une pagination et un tableau de données est.JSON retrival a échoué avec jquery .each

Je peux récupérer des valeurs de pagination, mais je ne suis pas capable de récupérer les valeurs du tableau de données avec la fonction .each de jquery.

Toutes suggestions ou entrées vraiment appréciées.

$.ajax({ url: "list.pubfw", 
     data :{action:action}, 
     dataType: "json", 
     type:"POST", 
     success: function(result){ 
         var options = ''; 
         $.each(result, function(){ 
          options += '<option value="' + 
           result.jsonData.fundId + '">' + 
           result.jsonData.fundId + "-" + 
           result.jsonData.fundName + "-" + 
           result.jsonData.srcFundGrpId + '</option>'; 
         }); 

         $("#selectCol").empty(); 
         $("#selectCol").html(options); 
        }, 
     error: function(xmlHttpRequest, textStatus, errorThrown){ 
        alert("ERROR"+errorThrown); 
        alert("STAT"+textStatus);     
        alert("xmlHttpRequest"+xmlHttpRequest); 
       } 
    }); 
+0

Pouvez-vous poster le code? J'ai essayé avec l'objet JSON et ça marche pour moi. – Chandu

+0

Ceci est mon code: $ .ajax ({url: "list.pubfw", données: {action: action}, dataType: "json", tapez: "POST", succès: function (résultat) {var options = ' '; $. each (result, function() {options + =' ';}); $ ("# selectCol"). empty(); $ ("# selectCol") .html (options);}, erreur: fonction (xmlHttpRequest, textStatus , errorThrown) {alert ("ERREUR" + errorThrown); alert ("STAT" + textStatus); alert ("xmlHttpRequest" + xmlHttpRequest);}}); – user545520

+1

Vous devriez avoir édité votre question pour mettre le code soigneusement. –

Répondre

0

Il pourrait y avoir une erreur dans la validation de JSON, vérifier Json Lint, depuis JSON est délicate.

+0

Je verfied déjà avec jsonlit.there n'est pas un problème dans le fichier JSON, seul problème avec retrival. Je ne sais pas comment récupérer.J'ai posté mon code pouvez-vous s'il vous plaît vérifier et répondre si des problèmes. – user545520

0

D'accord, voici deux notes:
1.Premièrement de tout ce que vous devez utiliser result.Data et non result.jsonData

2.Le champ Data détient un tableau d'objets que vous vous aurez à boucle au-dessus ou à l'utilisation index

3. si le champ Data ne détienne pas plus d'un point alors pas besoin de la méthode $.each donc vous pouvez facilement utiliser:
result.Data[0].fundId ..etc
Mais comme il est un tableau o f objecte alors je suppose qu'il peut contenir plus d'articles si chacun est nécessaire, mais pas la façon dont vous utilisez, utilisez plutôt this

0

Je pense que vous devez changer la partie de données à partir de:

data: {action: action} 

Pour:

data: {"action": action} 

de cette façon, du côté du serveur, vous pouvez vérifier la propriété « action » de la demande à venir en, au lieu d'avoir le nom de la propriété soit aussi variable que sa valeur.

Sur une note de côté, je changerais votre fonction de succès:

success: function(result){ 
        var selectCol = $('#selectCol'); 
        selectCol.empty(); 

        $.each(result, function(){ 
         var option = $('<option/>'); 
         option.val(result.jsonData.fundId); 
         option.text(
          result.jsonData.fundId + "-" + 
          result.jsonData.fundName + "-" + 
          result.jsonData.srcFundGrpId); 

         selectCol.append(option); 
        }); 
       } 

Cela permet de construire une (peut-être) chaîne très grand, et il est aussi plus sûr d'utiliser text() que html(), parce que html() me contenterai insérez tout ce qui est entré en tant que html, vous laissant vulnérable aux attaques XSS. text() sera html encoder tout ce qui entre.