2011-11-11 1 views
4

Hy! Je veux faire un autosuggest à partir de mon fichier php qui retourne un objet Json. Je Parse dans js pour obtenir un lien avec le droit id (regardez le JSON)AutoSuggest à partir de JSON avec le lien

JSON search_new.php:

{"Data":{"Recipes":{"Recipe_5":{"ID":"5","TITLE":"Spaghetti Bolognese"},"Recipe_7":{"ID":"7","TITLE":"Wurstel"},"Recipe_9":{"ID":"9","TITLE":"Schnitzel"},"Recipe_10":{"ID":"10","TITLE":null},"Recipe_19":{"ID":"19","TITLE":null},"Recipe_20":{"ID":"20","TITLE":"Hundefutter"},"Recipe_26":{"ID":"26","TITLE":"Apfelstrudel"},"Recipe_37":{"ID":"37","TITLE":null},"Recipe_38":{"ID":"38","TITLE":"AENDERUNG"},"Recipe_39":{"ID":"39","TITLE":null},"Recipe_40":{"ID":"40","TITLE":"Schnitzel"},"Recipe_42":{"ID":"42","TITLE":"Release-Test"},"Recipe_43":{"ID":"43","TITLE":"Wurstel2"}}},"Message":null,"Code":200} 

Appel à JS:

<script type="text/javascript"> 
    $(function() { 
    var allRecipes = (<?php include("php/search_new.php"); ?>).Data.Recipes; 
     var recipeNames = []; 
    for(var i in allRecipes) { 
     recipeNames.push("<a href=\"/php/get_recipe_byID.php?id="+ allRecipes[i].ID + "\">" + allRecipes[i].TITLE) + "</a>"); 
    } 
    var arr = new Array(); 
    for(var k in recipeNames){ 
    arr.push(" " + recipeNames[k]); 
    } 

    $("#searchrecipes").autocomplete({ 
    minLength: 3, 
    source: arr 
    }); 
     }); 
    </script> 

Firebug erreur :

missing ; before statement recipeNames.push("" + allRecipes[i].TITLE) + "");

Avant d'avoir recipeNames.push("allRecipes[i].TITLE)"); tout a bien fonctionné

S'il vous plaît aider.

+3

'(' une fois, mais fermé à ouvert deux fois – run

+0

@run l'afficher comme réponse une autre quête:. Maintenant, il apparaît sous forme de texte et non comme un href – test123123

Répondre

0

Oui, je vois votre problème. Voici le code dont vous avez besoin:

$(function() { 
    var data = (<?php echo file_get_contents("php/search_new.php"); ?>).Data.Recipes; 
    var source = []; 
    for (var i in data) { 
     source.push({"href": "/php/get_recipe_byID.php?id=" + data[i].ID, "label": data[i].TITLE}); 
    } 
    $("#searchrecipes").autocomplete({ 
     minLength: 3, 
     source: source, 
     select: function(event, ui) { 
      window.location.href = ui.item.href; 
     } 
    }); 
}); 

Vous pouvez trouver un exemple ici: http://jsfiddle.net/dFApV/

0

il y a bien sûr une parenthèse supplémentaire à allRecipes [i] .TITLE qui doit être effacée! : D

Je dirais que vous pourriez obtenir le même résultat, mais avec une solution beaucoup plus agréable en utilisant la méthode .result. Dites-moi ce que vous en pensez!

JQuery API Autocomplete Result

+0

thx ..... le problème est que le href apparaît comme texte pas comme un lien html – test123123

+0

Est-ce le plugin http://docs.jquery.com/Plugins/autocomplete? Cause ne regarde pas comme il accepte les liens ... mais je vais vérifier plus loin – Mauro

+0

j'utilise jquery ..... – test123123

Questions connexes