为什么在使用jquery ajax load时未定义jquery pjax

时间:2016-01-17 18:00:21

标签: javascript jquery pjax

为什么jsery pjax没有在js文件中定义,但如果我输入$.pjax

,它会在控制台中定义
function loadScript(url, callback) {
  callback = (typeof callback != 'undefined') ? callback : {};
  $.ajax({
    type: "GET",
    url: url,
    success: callback,
    dataType: "script",
    cache: true,
  });
}

$('document').ready(function() {
  $.when(
    loadScript('//cdnjs.cloudflare.com/ajax/libs/codemirror/5.10.0/codemirror.min.js'),
    loadScript('//cdnjs.cloudflare.com/ajax/libs/jquery.pjax/1.9.6/jquery.pjax.min.js')
  ).done(function() {
    $('.loading').hide().next().css({
      'visibility': 'visible',
      'overflow-y': 'auto',
    });
    console.log($.pjax() + ' ...');
  });

});

它控制了这个错误:Uncaught TypeError: $.pjax is not a function

2 个答案:

答案 0 :(得分:2)

你的loadScript函数没有返回一个promise,所以从$ .when的角度来看,你的脚本会立即加载,这不是现实。

尝试更改行:

$.ajax({
// ...
})

return $.ajax({
// ...
});

所以你返回$ .when

的承诺

答案 1 :(得分:1)

这里有两个问题。

  • 您必须返回$ .ajax

  • 返回的承诺
  • $。当接受一个参数,即数组

function loadScript(...) {
 ... 
 return $.ajax
}

$.when([loadScript('a'), loadScript('b')]).then(...)