在AJAX调用之后释放脚本

时间:2015-06-01 17:17:08

标签: javascript jquery 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");
    }
});

其中!function(d,s,id){var js,fjs = d.getElementsByTagName(s)[0],p = / ^ http:/ .test(d.location)?&#39; http&# 39;:&#39; HTTPS&#39 ;; ...这是从Twitter获取的脚本,用于嵌入我的教师的时间表。

我的问题是:每次我点击一个老师都能很好地工作,但是当我改变教练时,脚本不会刷新(我认为)并且时间线不会出现。我该怎么办? 谢谢大家!

1 个答案:

答案 0 :(得分:1)

尝试添加以下行:$('script#twitter-wjs').remove();在调用twitter代码之前 !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脚本。由于您提取动态修改的代码并插入<a> twitter锚标记,因此每次都会重新加载。此外,浏览器非常智能,可以从缓存中提取脚本。

http://jsfiddle.net/pg7man7k/