2012-05-28 4 views
1

С помощью кого-то я создал скрипт, который загружает содержимое JSON на странице. Проблема в том, что контент загружается слишком много раз, а не один раз. Это функция JQuery, которая входит в голове страницы в файл main.js:JQuery загружает контент слишком много раз

function bakVorm(page,targetClass) 
    { 
    $.getJSON('http://shop.com/'+page+'/?format=json', function(data){ 
     var text = '' 
     $.each(data.textpage, function(index, text){ 
     $(text).html('' + text + '').appendTo(targetClass); 
}); 
}); 

На странице я пытаюсь загрузить содержимое в DIV с этим кодом:

$(function(){ 
bakVorm('vraag','.eigenschappen'); 
bakVorm('test','.verzendkosten'); 
}); 

Проблема в том, что содержимое загружается слишком много раз в соответствующем div. Вероятно, сценарий не остановлен или что-то еще.

Любая помощь более приветствовать

ответ

2

В этой строке

$(text).html('' + text + '').appendTo(targetClass); 

Вы добавляете содержание текста к каждому узлу верхнего уровня в тексте, так что если текст

<div></div><p></p> 

Вы будете в конечном итоге с

<div><div></div><p></p></div><p><div></div><p></p></p> 

Так оставить из HTML часть, и просто

$(text).appendTo(targetClass); 
+0

Ahh отлично! Спасибо за ваше прямое объяснение. Это имеет смысл! – Meules

0

Попробуйте опорожнении targetClass в вашем коде:

function bakVorm(page,targetClass) 
{ 
$.getJSON('http://shop.com/'+page+'/?format=json', function(data){ 
    var text = '' 
    $.each(data.textpage, function(index, text){ 
    $(targetClass).empty().append(text); 
    }); 
}); 

Или попробуйте не использовать append

function bakVorm(page,targetClass) 
{ 
$.getJSON('http://shop.com/'+page+'/?format=json', function(data){ 
    var text = '' 
    $.each(data.textpage, function(index, text){ 
    $(targetClass).html(text); 
    }); 
});