我的应用程序通过AJAX/JSONP加载HTML和JavaScript,而不是以标准方式加载页面。它在Iframe中工作,因此,它是与父帧保持通信的正确方式(Safari限制)。
我必须发出两个请求:加载自定义页面的JavaScript和HTML。为了确保一切正常,我可以先加载JavaScript,然后加载JavaScript (在JavaScript onload回调中)。但我希望这两项请求同时发出。
我准备了密码。当_finishLoading()和JavaScript都加载时,脚本必须调用JavaScript。是否有可能_finishLoading()函数不会在浏览器中执行?
function Loader()
{
this.load = function()
{
// ...some code here...
var this_ = this;
var jsLoaded = false;
var htmlLoaded = false;
$.ajax(
url: newUrl,
dataType: "jsonp",
jsonpCallback:
function()
{
$.ajax(
url: someUrl,
dataType: "html",
success:
function( data )
{
$( '#' + contentElId ).html( data );
if( htmlLoaded )
{
this_._finishLoading()
}
jsLoaded = true;
}
);
}
);
$.ajax(
{
url: someUrl2,
dataType: "html",
success:
function( data )
{
$( '#' + contentElId ).html( data )
if( jsLoaded )
{
this_._finishLoading()
}
htmlLoaded = true;
}
}
);
}
}
更新.
我需要加载JavaScript,然后调用onload()来导入加载的Javascript。,如果你知道更方便的方式,然后分别加载,请让我知道。
发布于 2013-07-13 11:27:40
考虑使用$.when()函数
代码应该是这样的:
var this_ = this;
var jsLoaded = false;
var htmlLoaded = false;
var deferred = $.Deferred();
$.ajax(
url: newUrl,
dataType: "jsonp",
jsonpCallback:
function()
{
$.ajax(
url: someUrl,
dataType: "html"
success: function(){
deferred.resolve();
}
);
}
);
var promise2 = $.ajax(
{
url: someUrl2,
dataType: "html",
}
);
$.when(deferred, promise2).done(function(a1, a2){
$( '#' + contentElId ).html(a1);
$( '#' + contentElId ).html(a2);
this_._finishLoading()
});
https://stackoverflow.com/questions/17629722
复制相似问题