2010-11-01 5 views
0

J'ai un menu javascript fly out qui est initialisé en utilisant l'événement onload. Toutes les données dans le menu sont codées en dur mais doivent être dynamiques et proviendront de ma base de données. Y at-il un moyen de construire ce fichier javascript avec mes valeurs de base de données? Est-ce possible? Je suis un total noob à JS alors s'il vous plaît épelez les choses pour moi. Peut-être un exemple de ce que je pense va vous aider. Cela fait partie de mon fichier JQuery après avoir mon tableau sérialisé. Comment puis-je obtenir le tableau dans le menu d'ici?Possibilité de charger des données dans un fichier javascript?

 if(data.success == 0) { 
     // error 
     } else { 
     // my array that needs to be exported into the JS file. 
     } 

C'est l'autre fichier dont je parle qui doit être construit avec les données de la base de données.

function create_menu() 
{ 
    document.write(
    '<table cellpadding="0" cellspaceing="0" border="0" style="width:98%"><tr>' + 
    '<td class="td" valign="top">' + 

    '<h3>Test</h3>' + 
    '<ul>' + 
     '<li>afd</li>' + 
     '<li>fsg</li>' + 
     '<li>sfg</li>' + 
     '<li>fsg</li>' + 
    '</ul>' + 
    '</td></tr></table>'); 
} 

Répondre

0

Vous devez utiliser AJAX.

Vous pouvez charger le contenu depuis l'arrière-plan dans un tableau JavaScript et l'utiliser. C'est ainsi que les données dynamiques sont extraites du serveur sans actualisation de la page. J'espère que cela aide.

+0

OK, je l'utilise JQuery. Y a-t-il un exemple que vous pouvez me montrer ou me montrer? – Jim

+0

S'il vous plaît regardez: http://api.jquery.com/jQuery.ajax/ –

+0

Merci pour le lien. Je suis déjà un peu familier avec JSON et j'ai utilisé un peu mais dans le passé. Je peux construire le tableau JS mais je suis perdu après ça. Comment pourrais-je obtenir le tableau de données dans le menu? – Jim

3

Une option consisterait à créer dynamiquement le fichier JavaScript sur le serveur lorsqu'une requête provient du navigateur en utilisant l'un des différents langages de script côté serveur. L'inconvénient de cette méthode est que les navigateurs peuvent mettre en cache le fichier et, par conséquent, peuvent fonctionner avec des données périmées.

L'autre option consiste à utiliser un fichier JavaScript statique et à utiliser un appel AJAX pour obtenir les dernières options de menu, puis les afficher dans le DOM de la page. Ce serait mieux que la première option puisque vous n'auriez pas les problèmes de mise en cache.

La troisième méthode consiste à générer dynamiquement le balisage pour la page et ne pas se soucier de demander un menu via JavaScript. C'est la meilleure option dans mon livre. Je ne voudrais pas attendre que les éléments de navigation d'une page soient demandés via JavaScript quand c'est quelque chose de simple qui devrait déjà faire partie de la page. JSON est un format de données qui peut être exécuté en utilisant eval().

+0

Bonjour Justin, Les données du menu doivent être dynamiques. Nous utilisons un menu déroulant pour montrer les liens et ils changeront toutes les heures. Peut-être que le # 2 serait le meilleur? – Jim

+0

@Jim - Si c'est l'exigence, le n ° 2 est le meilleur. Je serais intéressé de savoir comment vous allez définir l'intervalle d'actualisation afin que les données du menu soient mises à jour si nécessaire. –

+0

Je pensais utiliser setTimeout. Est-ce que ce n'est pas une bonne option? Je suppose que je pourrais utiliser un cron pour cela, mais ce n'est pas la meilleure solution. Pouvez-vous recommander quelque chose d'autre? – Jim

0

Créez du JSON qui représente le format que vous avez codé en dur et évaluez-le comme dans Wikipedia's example

Ceci n'est correct que si vous faites confiance à la source du JSON, dans ce cas vous le générez vous-même, donc ça devrait aller .

exemple, json_menu.php renvoie le texte:

create_menu({ "menus" : ["afd", "fsg", "sfg", "fsg"] }); 

Et vous exécuter comme ceci en l'évaluant:

function create_menu(JSONData) 
{ 
    var s = '<table cellpadding="0" cellspaceing="0" border="0" style="width:98%"><tr>' + 
'<td class="td" valign="top">' 

    // loop through each one 
    for(var menu in JSONData.menus) 
     s = s + '<li>' + menu + '</li>'; 
    s = s + '</ul></td></tr></table>'; 

    // write it out 
    document.write(s); 
} 

// this gets called somewhere in your OnLoad 
function yourOnLoader() 
{ 
    var ajaxRequest = new ajaxObject('http://your-site.com/json_menu.php'); 
     ajaxRequest.callback = function (responseText) { eval(responseText); } 
    ajaxRequest.update(); 
} 
+0

Salut Gaz, donc je voudrais construire un tableau JS, puis comment je rendrais ces données dans le menu? – Jim

+0

@Jim, comment est-il actuellement codé en dur? Utilisez-vous déjà un tableau ou d'autres données structurées, exprimez-vous simplement le même format de données dans JSON –

+0

non, les liens dans le menu sont codés en dur dans le fichier javascript et expulsés vers le navigateur via document.write. Actuellement, il n'y a pas de tableau mais je peux obtenir un tableau JSON assez facilement avec toutes mes données de la base de données. Mon problème est comment obtenir ces données dans le fichier javascript afin de le rendre à l'utilisateur. J'utilise JQuery mais je suis vraiment bloqué à ce stade. – Jim

Questions connexes