Ich bin ein Neuling, um jQuery und Ajax. Ich erstelle eine App, bei der verschiedene Inhalte aus derselben json-Datei geladen werden, abhängig von der angeklickten Navigationsoption.Json viel Laden über Ajax auf den zweiten Klick
Dies ist mein Code:
$(document).ready(function(){
var $wrapper = $(".wrapper");
$(document).on("click", ".navLink", loadRecipes);
function loadRecipes(){
var type = $(this).attr("href");
$.ajax({
type: "GET",
url: "recipes.json",
cache: false,
success: function(data){
for(var i = 0; i < data.recipes.length; i++){
var recipe = data.recipes[i];
if(type == recipe.type){
var name = "<h3 class='recipeTitle'>" + recipe.name + "</h3>";
$wrapper.append(name);
}
}
});
return false;
}
})
Und die json sieht ungefähr so aus:
{
"recipes":[
{"name": "A", "type":"type1"},
{"name": "B", "type":"type2"},
{"name": "C", "type":"type2"},
{"name": "C", "type":"type1"}
]
}
Das Attribut href entspricht das type-Attribut in der JSON-Datei. So werden bestimmte Elemente des JSON geladen, wenn auf einen bestimmten Link geklickt wird. Wenn ich zum ersten Mal auf einen der Links klicke, wird der entsprechende Inhalt geladen. Wenn ich versuche, auf einen anderen Link zu klicken, wird das Click-Ereignis ausgelöst, aber der JSON-Inhalt wird nicht geladen. Ich habe die Ereignisdelegierung für das Click-Ereignis eingeführt, aber es hat nicht geholfen. Ich dachte, es könnte ein Problem mit dem Caching sein, so habe ich den Cache hinzugefügt: false Parameter, aber es hat auch nicht geholfen. Wenn mir jemand einen Hinweis geben kann, was ich vermisse, würde ich das schätzen.
Sind Sie sicher, dass '.wrapper' Element die ganze Zeit existiert? Ich meine, du hast Navigation gesagt. Also ist es unsicher, ob das Element existiert oder nicht. Nebenbei kannst du versuchen 'Debugger' in'Success' zu setzen, um zu sehen, ob der zweite Klick an die Stelle kommt, wo er erwartet wird .. –