即使有回调函数,jQuery加载也不会在没有警报的情况下工作

时间:2015-06-04 22:38:04

标签: javascript jquery ajax

我使用带有回调的jquery load函数在页面上加载html内容和javascript(使用getScript)。但是我遇到了一个奇怪的情况,因为正在加载的javascript在第一次尝试时没有被识别(它在第二次或后续尝试时可以工作)或者没有到位警报。我已经阅读了类似的情况,建议的解决方案是为负载提供回调函数。但我已经有了回调函数。这是代码:

$("[id^=ajax_]").click(function(e){
  var linkid = $(this).attr("id");
  var arr = linkid.split("_");
  var link = arr[1];
  ajax_load_content_and_get_script(link);
});

function ajax_load_content_and_get_script(link) {
    var url = "/" + link;
    $("#pagecontent").load(url + "/ajax", function() {
      //alert(); //works with this un-commented 
      $.getScript("/js/" + link + ".js");
    });
}

正如您在上面所看到的,正在加载的脚本(使用getScript)被识别,并且如果我取消注释了alert语句,则可以正常工作。但是没有警报,剧本就无法识别。我已经在为负载使用回调函数,如上所示。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

看起来像这样?

$("button").click(function(e){
  var linkid = $(this).attr("id");
  var arr = linkid.split("_");
  var link = arr[1];
  ajax_load_content_and_get_script(link);
});

function ajax_load_content_and_get_script(link) {
    var url = "/" + link;
    $.ajax({
        url: url + "/ajax",
        type: 'POST',
        async:false
    }).success(function(data){){
         $("#pagecontent").html(data);
         $.getScript("/js/" + link + ".js");
    });

}

http://jsfiddle.net/aswzen/w4068ygL/3/