2010-06-14 6 views
2
$("#autoNames").html(function (index, html) { 
            var begin = "<script language='javascript' type='text/javascript'> var names = ["; 
            var end = String('];' + '<' + '/' + 'script' + '>'); 
            var result = begin.concat(jsonService, end); 
            $("#autoNames").html(result); 
            return false; 
           }); 

Je ne peux pas comprendre pour la vie de moi pourquoi cela ne fonctionne pas. J'ai eu la fonction html pour fonctionner avant, mais pour une raison quelconque cela laisse juste ma balise autoNames vide ... et j'ai appelé un alert() sur la variable de résultat et les choses existent dans cette chaîne ... des indices?Jquery .html remplace simplement mon sélecteur, quel est le problème?

Merci

+0

Qu'est-ce 'jsonService'? –

+0

juste une chaîne avec des choses comme "{value:" ", value" "}, {...}" – jphenow

+0

tout cela fonctionne, je sais que ceux-ci retournent de vraies choses. Une fenêtre d'alerte montrera que cela fonctionne. – jphenow

Répondre

2

Lorsque vous passez une fonction à .html() cette fonction doit retourner ce que vous voulez réglé sur, comme ceci:

$("#autoNames").html(function (index, html) { 
    var begin = "<script type='text/javascript'> var names = ["; 
    var end = String('];' + '<' + '/' + 'script' + '>'); 
    return begin.concat(jsonService, end); 
}); 

Actuellement vous définissez le .html() mais en renvoyant false, et cet appel externe .html() le redéfinit à rien. Sinon, faire exactement cela puisque vous avez affaire à un élément:

var begin = "<script type='text/javascript'> var names = ["; 
var end = String('];' + '<' + '/' + 'script' + '>'); 
$("#autoNames").html(begin.concat(jsonService, end)); 
+0

jsonService est simplement une chaîne qui fonctionne. et c'est tout ce qui doit vraiment être connu. En outre, comme dans les 3 autres tentatives de réponses, cela ne fonctionne pas. Merci quand même. On dirait une sorte de problème étrange, je sais. :/ – jphenow

+1

@jphenow - Avec quel navigateur travaillez-vous? Aussi une raison particulière d'utiliser ces balises de script du tout? semble que '$ .parseJSON()' ou 'eval()' est ce dont vous avez réellement besoin ici. –

+0

ils étaient en erreur plus que c'était à cause de la nature des objets que j'essaie de passer – jphenow

0

Lors du passage d'une fonction dans la méthode html, vous êtes censé retourner le code HTML que l'élément doit être réglé sur. Je ne vois aucune raison pour laquelle vous auriez besoin d'utiliser cette surcharge en premier lieu (pour générer dynamiquement du contenu basé sur chaque élément d'un ensemble); il vous suffit probablement d'utiliser le code à partir de cette fonction:

var begin = "<script language='javascript' type='text/javascript'> var names = ["; 
var end = String('];' + '<' + '/' + 'script' + '>'); 
var result = begin.concat(jsonService, end); 
$("#autoNames").html(result); 
+0

Bon point. Cela n'a pas fonctionné. Je vais le laisser comme ça pendant que je continue le débogage, parce que c'est mieux que l'original. J'ai commencé comme ça parce que quand j'ai d'abord pensé à cela, je pensais que plus de fonctionnalités seraient nécessaires. – jphenow

1

aimerions savoir ce que vous essayez de faire ici ... de toute façon:

$("#autoNames").html('<script>var names = [' + jsonService + '];</script>'); 
+0

met également mon sélecteur à rien. – jphenow

+0

Que voulez-vous dire par "mon sélecteur"? – James

+0

cette chose se termine avec rien entre les balises quand j'utilise .html – jphenow

0

manque quelque chose ou Im sont vous venez de mettre un tableau JS à l'intérieur de ce div? Il semble que vous ayez besoin d'en faire pour chacun ou similaire pour prendre les valeurs du tableau et les mettre dans le code HTML.

Peut-être est-ce juste que j'ai manqué quelques détails, mais semble bizarre.

Et que jsonService est vraiment un json? si elle est alors u besoin de:

var jsonObj = eval("("+jsonService+")"); 

et accéder à ses valeurs comme ceci:

alert(jsonObj.valueName);