2017-06-16 1 views
-1

J'ai un problème avec jQuery UI autocomplete que j'essaye de résoudre avec beaucoup de recherche et seulement résolu partiellement. J'ai réussi à le faire fonctionner du tout avec ce code:jQuery UI autocomplete dans AJAX/JSON

$("#term").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: "https://wger.de/api/v2/exercise/?format=json", 
      type: "GET", 
      data: { name: request.term }, 
      dataType: "json", 
      success: function(data) { 
       response($.map(data, function(item) { 
        return { 
         label: item, 
         value: item 
        } 
       })); 
      } 
     }); 
    } 
}); 

Je travaille avec l'API open source dans JSON, voici un exemple:

{ 
    "count": 1, 
    "next": null, 
    "previous": null, 
    "results": [ 
    { 
     "id": 436, 
     "license_author": "Andrew Carothers", 
     "status": "1", 
     "description": "<p>1 Minute for each exercise</p>\n<ol>\n<li>Hold feet 6 inches off ground</li>\n<li>Crunches</li>\n<li>Side Crunches (L)</li>\n<li>Side Crunches (R)</li>\n<li>Heel Touches</li>\n<li>Plank Crunch</li>\n<li>Scissor Kicks</li>\n<li>Swim Kicks</li>\n<li>V Crunches</li>\n<li>Hold feet 6 in off ground</li>\n</ol>\n<p>Exercises can be substituted to vary workout</p>", 
     "name": "10 Min Abs", 
     "name_original": "10 Min Abs", 
     "creation_date": "2016-12-09", 
     "uuid": "3c5f6e1c-cb22-4a9f-a13e-d14afeb29175", 
     "license": 2, 
     "category": 10, 
     "language": 2, 
     "muscles": [], 
     "muscles_secondary": [], 
     "equipment": [] 
    } 
    ] 
} 

Je veux obtenir des suggestions de saisie semi-automatique avec des lettres de "name" dans JSON, mais j'ai un tableau JSON entier, même avec des objets inexistants. J'ai déjà essayé item.results[0].name, mais tout ce que j'ai c'est TypeError: item.results is undefined. Comment modifier $.ajax pour obtenir la valeur "nom" de l'objet JSON dans les suggestions de saisie semi-automatique?

Merci pour toute aide.

+0

Les erreurs que vous obtenez suggère que les données que vous nous avez donné objet est pas ce que vous recevez. Nous ne pouvons pas vous aider sans une représentation réelle des données que vous recevez. –

+0

@KevinB Eh bien, je vérifie le Moniteur de réseau de Firefox à chaque fois et je reçois une bonne URL, de type json, par exemple https://wger.de/api/v2/exercise/?format=json&name=10+Min+Abs – oskarwilczynski

+0

data.results.map (... –

Répondre

-1

cela fonctionne:

$("#term").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: "https://wger.de/api/v2/exercise/?format=json", 
       type: "GET", 
       data: { name: request.term }, 
       dataType: "json", 
       success: function(data) { 
        response($.map(data.results, function(index,item) { 
         return { 
          label: item.name, 
          value: item.name 
         } 
        })); 
       } 
      }); 
     } 
    }); 
+0

Non, j'ai déjà essayé et la réponse est 'TypeError: item is null' – oskarwilczynski

+0

dans $ .each callback premier arg est index et la seconde est la valeur, désolé ma mauvaise –

+0

Bon, ça marche, mais la suggestion n'apparaît que lorsque vous tapez 100% de nom correct en entrée, cela ne suggère rien avant que le nom ne soit correct, car le script recherche des tableaux JSON inexistants. – oskarwilczynski