【问题标题】:Ajax site. Page is correctly loaded depending on previous page阿贾克斯网站。根据上一页正确加载页面
【发布时间】:2014-12-11 11:48:25
【问题描述】:

我想问问你的意见。我正在构建一个 ajax 网页。我的链接对它们链接到的 URL 进行 GET,选择 div.content 并更改实际 div.content 的内容。

此 GET 操作检索其中包含一些代码的 HTML 代码。它看起来可以正确执行,但仅当我不是来自特定链接时。我看不出有什么意义。

我不知道在此处发布哪些代码可能有用以查看效果,如果我粘贴的代码过多或过少,我很抱歉。

我有这两个函数来管理主布局中新脚本资源的加载:

loadScript: function (scriptUrl, callback) {
    if (jsArray[scriptUrl]) {
        console.log("loadScript already loaded " + scriptUrl);
        callback && callback();
    } else {
        jsArray[scriptUrl] = true;
        console.log("loadScript " + scriptUrl);
        var body = document.getElementsByTagName("body")[0];
        var script = document.createElement('script');
        script.type = "text/javascript";
        script.src = scriptUrl;
        script.onload = callback;

        body.appendChild(script); //or something of the likes
    }
},
loadScripts: function (scriptsUrl, callback) {
    console.log("loadScripts");
    if (scriptsUrl.length === 1) {
        this.loadScript(scriptsUrl[0], callback);
    } else {
        var scriptUrl = scriptsUrl[0];
        scriptsUrl.shift();
        this.loadScript(scriptUrl, function () {
            Main.loadScripts(scriptsUrl, callback)
        });
    }
}
};

我所有与异步类的链接都绑定到这个函数:

var loadAsyncUrl = function (url) {
    if (main.currentPage === url) {}
    main.currentPage = url;
    $("div.container .page-content").hide();
    $("div.container .loading-link").show();
    $.get(url, function (data) {
        $("div.container #page-header").html($(data).find("div.container #page-header").html());
        $("div.container .breadcrumb").html($(data).find("div.container .breadcrumb").html());
        $("div.container .content").html($(data).find("div.container .content").html());
        $("div.container .loading-link").hide();
        $("div.container .page-content").show();
    }, 'html')
        .fail(function (e) {
        alert("ERROR 404");
        console.log(e);
    });
};

如果我从页面 A 转到任何页面(甚至是页面 A 本身),则不会调用 div.content 底部的 loadScripts 调用。另一方面,如果我从页面 B 转到任何页面,甚至是 A,代码都会正确执行。

实际上,页面 A 的 HTML 代码比其他页面重一些,所有的 CSS 规则等可能会花费更多时间来呈现。可能是这个原因吗?如果我再次加载来自页面 A 的页面 A,你如何解释它正在正确加载?

您将如何处理这个问题?我希望链接指向一个完整的网页,而不仅仅是我要加载的部分 html。我想要这个,因为如果用户决定在新标签中打开,他们就会拥有整个部分。

【问题讨论】:

  • 您是否从控制台收到任何错误?
  • 我没有。问题已经解决了。 JS 是如何执行的,即使它没有达到我的预期,但这是另一点......谢谢
  • 希望我的回答能以正确的方式推动你

标签: javascript jquery html ajax


【解决方案1】:

从您的代码中可以看出,我怀疑您的页面中可能缺少一些选择器

  1. $("div.container #page-header")
  2. $("div.container .breadcrumb")
  3. $("div.container .content")

尝试检查对象的 length 属性

if ($("selector").length > 0){
   //replace html
}

【讨论】:

  • 感谢您的回答,但没有成功...我已经尝试过,但一无所获。无论如何,所有元素都有内容。
  • 您是否从控制台收到任何错误?如果可以,可以发一下吗?
【解决方案2】:

该死!找了三天,就在我面前。

我的页面 A 的 div.container 内的 div.content 不止于此。

已更改为唯一 ID 和工作。

对不起

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 2013-01-01
    • 2016-11-27
    • 2012-11-23
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2021-01-05
    相关资源
    最近更新 更多