Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的JavaScript函数在jQuery load()调用完成加载之前运行?_Javascript_Jquery - Fatal编程技术网

为什么我的JavaScript函数在jQuery load()调用完成加载之前运行?

为什么我的JavaScript函数在jQuery load()调用完成加载之前运行?,javascript,jquery,Javascript,Jquery,我有一个JavaScript文件以及HomePage.xhtml和Header.xhtml Header.xhtml包含在HomePage.xhtml中,使用JavaScript 以下是我的JavaScript文件的示例代码: $(document).ready(function() { loadTemplate(); loadUserContext(); }); function loadTemplate() { $(function() { $("

我有一个JavaScript文件以及HomePage.xhtml和Header.xhtml

Header.xhtml包含在HomePage.xhtml中,使用JavaScript

以下是我的JavaScript文件的示例代码:

$(document).ready(function() {

    loadTemplate();
    loadUserContext();
});

function loadTemplate() {

    $(function() {
       $("#rcHeaderblock").load("Header.xhtml");
    });
}

function loadUserContext(){

    var sessionValue = 'Welcome, Guest';
    $('#networkID p:nth-child(1)').text(sessionValue);
}
networkID是Header.xhtml中要动态替换的div标记的id

但是通过执行两个调试步骤,我发现在Header.xhtml实际加载到我的HomePage.xhtml之前调用了
loadUserContext

为什么?

jQuery的函数使用ajax(异步)加载HTML文件

异步操作不会停止执行流,代码继续以串行方式执行。异步操作完成后,将调用该操作的回调。您可以注册异步操作的回调

在您的情况下,您可以使用load提供的回调对加载的HTML执行操作:

$("#rcHeaderblock").load( "Header.xhtml", function() {
    var sessionValue = 'Welcome, Guest';
    $('#networkID p:nth-child(1)').text(sessionValue);
});
jQuery的函数使用ajax(异步)加载HTML文件

异步操作不会停止执行流,代码继续以串行方式执行。异步操作完成后,将调用该操作的回调。您可以注册异步操作的回调

在您的情况下,您可以使用load提供的回调对加载的HTML执行操作:

$("#rcHeaderblock").load( "Header.xhtml", function() {
    var sessionValue = 'Welcome, Guest';
    $('#networkID p:nth-child(1)').text(sessionValue);
});
是异步的。但是,它为您描述的情况提供了一种回调机制。您可能想做的是:

$("#rcHeaderblock").load("Header.xhtml", loadUserContext);
然后就

$(document).ready(loadTemplate);
是异步的。但是,它为您描述的情况提供了一种回调机制。您可能想做的是:

$("#rcHeaderblock").load("Header.xhtml", loadUserContext);
然后就

$(document).ready(loadTemplate);

ajax是异步的。异步方法通常带有内置回调和/或承诺集成,请使用它。ajax是异步的。异步方法通常带有内置回调和/或promise集成,请使用它。这个答案可能需要更详细的说明。提问者可能不知道异步在这种情况下意味着什么。我试图依赖.load的链接,我的坏消息更新了答案。啊,当然,我错过了链接。虽然堆栈溢出的答案意味着不依赖于其他站点的链接就可以自己理解。不过编辑得很好。这个答案需要更多的细节来让它更清晰。提问者可能不知道异步在这种情况下意味着什么。我试图依赖.load的链接,我的坏消息更新了答案。啊,当然,我错过了链接。虽然堆栈溢出的答案意味着不依赖于其他站点的链接就可以自己理解。不过编辑得不错。