Disqus + AJAX + умер ... - PullRequest
       3

Disqus + AJAX + умер ...

5 голосов
/ 18 декабря 2011

Я пытался загрузить Disqus с помощью ajax на своей странице, я объясню.У меня есть одна страница внутри, у меня есть jqrusel, с разными изображениями, и у каждого есть свои комментарии.

Итак, когда я нажал на одно из этих изображений, я сделал этот код:

 $.get("/sets/comentarios",{set_id:set_id},function(data){
                $("#componet_comentarios").html(data);             

и этот URL-адрес загружается:

 var disqus_identifier = 'votar-<?= $id; ?>';
    var disqus_url = 'www.mitrendy.com/votar/<?= $id; ?>';

    // Remove the old script if it's found 
    oldDsq = document.getElementById('MitrendyComentDisqus');
    if(oldDsq) {
        (document.getElementsByTagName('head')[0] ||
        document.getElementsByTagName('body')[0]).removeChild(oldDsq);
    }


    (function() {
        var dsq = document.createElement('script');
        dsq.type = 'text/javascript';
        dsq.async = true;
        dsq.id = "MitrendyComentDisqus-<?= $id; ?>";
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();

, но никогда не обновляйте комментарии.Позже я увидел на официальной странице disqus:

DISQUS.reset({
  reload: true,
  config: function () {  
    this.page.identifier = "newidentifier";  
    this.page.url = "http://example.com/#!newthread";
  }
});

, но это то же самое, когда я пытался загрузить комментарии с помощью ajax, никогда не обновлял их.

Есть идеи?я без ума от этого.

Спасибо всем !!

1 Ответ

8 голосов
/ 26 марта 2012

У меня была похожая проблема, я переместил свой сайт на ajax, и подстраница, ранее включенная в php, которая содержит disqus js, теперь загружается с использованием ajax (контейнера для disqus и его скриптов), но когда он не загружается с целой страницей, сценарии не оцениваются. Поэтому я переместил их в глобальный файл .js и обернул в функцию, например так:

var disqus_shortname = 'myname';
var disqus_identifier = 'myident';

function loadDisqus()   {
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
}

и после того, как ajax загружает контент, я звоню loadDisqus(); и плата загружается. В вашем примере вы также должны передать идентификатор в качестве параметра и определить его при вызове, все должно работать правильно.

...