Chose drôle est que si je supprime le commentaire pour alerte (données [i] .id) le code fonctionne. Comme dans l'exemple, la chaîne n'est pas concaténée, donc je n'ai pas d'options dans la boîte de sélection. Astuces? Aidez-moi?comportement drôle de code jquery
Réédition de sorte que les gars vous pouvez voir toute la méthode
function socialbookmarksTableData(data)
{
var toAppend = '';
var bookmarkingSites = '';
$.getJSON("php/socialbookmark-get-bookmarking-sites.php",function(data){
for(var i = 0; i < data.length; i++){
//alert(data[i].id);
bookmarkingSites += '<option value = "' + data[i].id + '">' + data[i].title + '</option>';
}
});
$.each(data.results, function(i, id){
if(i%2 == 1)
toAppend += '<tr class="first">';
else
toAppend += '<tr class="second">';
if(data.results[i].status == "PENDING" || data.results[i].status == "POSTED")
toAppend += '<td><span class="approved">' + data.results[i].status + '</span></td>';
else
toAppend += '<td>' + data.results[i].status + '</td>';
toAppend += '<td><select name="sb2" id="sb2">'+
'<option value="'+ data.results[i].bookmark +'">' + data.results[i].bookmark +'</option>' +
bookmarkingSites + '</select></td>';
toAppend += '<td>' + data.results[i].user + '</td>';
toAppend += '<td>' + data.results[i].link + '</td>';
toAppend += '<td>Some Article</td>';
toAppend += '<td>' + data.results[i].title + '</td>';
toAppend += '<td>' + data.results[i].description + '</td>';
toAppend += '<td>' + data.results[i].tags + '</td>';
toAppend += '<td>' + data.results[i].date + '</td>';
toAppend += '<td><div class="actions">';
toAppend += '<ul><li><input class="radio" name="input" type="checkbox" value="' + data.results[i].id + '" /></li>';
toAppend += '<li><a class="action1" href="#">1</a></li>';
toAppend += '<li><a class="action4" href="#">4</a></li></ul></div></td></tr>';
});
$("#searchTable tbody").append(toAppend);
}
merci, fonctionne comme un charme maintenant. – user253530
En plus des guillemets environnants, vous avez besoin de l'échappement HTML partout où vous mettez du texte dans une chaîne de HTML. Le code tel qu'il est standard est rempli de trous de sécurité XSS (cross-site-scripting) potentiels pour cette raison. Il est souvent plus facile d'écrire le contenu des '
Qu'est-ce que vous avez est une condition de course classique. Le code
getJSON
effectue un appel asynchrone. Lorsque vous avez l'alerte là-bas le code sous l'appelgetJSON
est exécuté avant que l'appel ne revienne du rappel. Sans l'alerte, elle est exécutée après le rappel. C'est en fait une chance car on ne peut pas garantir que cela se produira de cette façon. Vous devez placer tout le code qui repose sur les données renvoyées par l'appelgetJSON
dans le rappel afin que vous puissiez garantir que les données sont renvoyées avant de l'utiliser.Source
2010-04-01 01:50:32 tvanfosson
À partir du code fourni il semble que vous faites l'appel et la fonction de rappel JSON à la variable ajoute bookmarkingSites. jusqu'ici tout va bien. Le code vers lequel pointe la flèche est en dehors de la fonction de rappel et s'exécutera avant que le rappel JSON ne soit appelé. Par conséquent, bookmarkingSite sera une chaîne vide et il n'y aura pas d'options dans la zone de sélection.
Le code permettant de construire la balise d'option ne serait-il pas aussi dans le rappel ou dans une fonction appelée par le rappel?
Source
2010-04-01 01:53:25
Questions connexes