2015-06-01 4 views
-3

Я пишу Ajax вызов:Сброс скрипта после вызова AJAX

$.ajax({ 
    method: "POST", 
    //dataType: "json", //type of data 
    crossDomain: true, //localhost purposes 
    url: "./query/ins_desc.php", //Relative or absolute path to file.php file 
    success: function (response) { 
     console.log(JSON.parse(response)); 
     var instructor = JSON.parse(response); 
     var el = ""; 
     i = i - 1; 
     el += "<style>.insegnanti{vertical-align: bottom}</style><div class='insegnanti' id='i" + instructor[i].id + "'><img src='" + instructor[i].image + "'><div class='desc'><b><p style='font-size:20px'>" + instructor[i].name + " " + instructor[i].surname + "</b></p><br><br>" + instructor[i].description + "</div></div><div class='twitter'><a class='twitter-timeline' href='https://twitter.com/" + instructor[i].twitter + "' data-widget-id='" + instructor[i].twitter_id + "'>Tweet di @" + instructor[i].twitter + "</a></div>"; 
     $(".contenitore-dinamico").html(el); 
     $(".contenitore-dinamico").fadeOut(1); 
     $(".contenitore-dinamico").fadeIn(3000); 

     !function (d, s, id) { 
      var js, fjs = d.getElementsByTagName(s)[0], 
       p = /^http:/.test(d.location) ? 'http' : 'https'; 
      if (!d.getElementById(id)) { 
       js = d.createElement(s); 
       js.id = id; 
       js.src = p + "://platform.twitter.com/widgets.js"; 
       fjs.parentNode.insertBefore(js, fjs); 
      } 
     }(document, "script", "twitter-wjs"); 

    }, 
    error: function (request, error) { 
     console.log("Error"); 
    } 
}); 

, где функция (д, с, ID) {вар JS, FJS = d.getElementsByTagName (ы) [0], . р =/^ Http:/тест (d.location) 'HTTP': 'HTTPS'; ... это сценарий, взятый из твиттера, для встраивания графиков моих инструкторов.

Мой вопрос, если: каждый раз, когда я нажимаю учитель, отлично работает, но когда я меняю инструктора, сценарий не обновляется (я думаю), и временная шкала не появляется. Как я могу сделать? Спасибо всем!

+0

Вот некоторые безобразно отформатированный код у вас там. Рассмотрите возможность исправления форматирования кода, чтобы повысить вероятность ответа. – bhspencer

+0

Что значит «изменить инструктора»? – jfriend00

+0

Попробуйте добавить следующую строку: '$ ('script # twitter-wjs'). Remove();' Перед вызовом выполнить твиттер-код '! Function (d, s, id) ...' Я не 100 % уверен, что он будет работать, но он должен удалить скрипт, чтобы он мог снова вытащить. – MiltoxBeyond

ответ

1

Попробуйте добавить следующую строку: $('script#twitter-wjs').remove(); Перед вызовом сделать код твиттер !function(d,s,id)...

Конечный результат должен быть:

$.ajax({ 
    method: "POST", 
    //dataType: "json", //type of data 
    crossDomain: true, //localhost purposes 
    url: "./query/ins_desc.php", //Relative or absolute path to file.php file 
    success: function (response) { 
     console.log(JSON.parse(response)); 
     var instructor = JSON.parse(response); 
     var el = ""; 
     i = i - 1; 
     el += "<style>.insegnanti{vertical-align: bottom}</style><div class='insegnanti' id='i" + instructor[i].id + "'><img src='" + instructor[i].image + "'><div class='desc'><b><p style='font-size:20px'>" + instructor[i].name + " " + instructor[i].surname + "</b></p><br><br>" + instructor[i].description + "</div></div><div class='twitter'><a class='twitter-timeline' href='https://twitter.com/" + instructor[i].twitter + "' data-widget-id='" + instructor[i].twitter_id + "'>Tweet di @" + instructor[i].twitter + "</a></div>"; 
     $(".contenitore-dinamico").html(el); 
     $(".contenitore-dinamico").fadeOut(1); 
     $(".contenitore-dinamico").fadeIn(3000); 
     $('script#twitter-wjs').remove(); 
     !function (d, s, id) { 
      var js, fjs = d.getElementsByTagName(s)[0], 
       p = /^http:/.test(d.location) ? 'http' : 'https'; 
      if (!d.getElementById(id)) { 
       js = d.createElement(s); 
       js.id = id; 
       js.src = p + "://platform.twitter.com/widgets.js"; 
       fjs.parentNode.insertBefore(js, fjs); 
      } 
     }(document, "script", "twitter-wjs"); 

    }, 
    error: function (request, error) { 
     console.log("Error"); 
    } 
}); 

Я проверил его локально на сайте ссылку. И настройте JSFiddle, чтобы продемонстрировать код в действии, явно смоделированный, так как у меня нет ваших php-скриптов. Так как вы тянете динамически модифицированный код и вставляете теги якоря twitter, он будет перезагружаться соответствующим образом каждый раз. Кроме того, браузер достаточно умен, чтобы вытащить скрипт из кеша.

http://jsfiddle.net/pg7man7k/

+0

PERFECT! Извините, я не пробовал это раньше, потому что я думал, что это не работает! Еще раз спасибо! –

Смежные вопросы