Javascript Ajax不会发布到div

Javascript Ajax不会发布到div,javascript,jquery,ajax,Javascript,Jquery,Ajax,对于这段代码,我没有从jshint或控制台收到任何错误。但是,我的ajax内容并没有发布到预期的div。但是,警报会触发: var recentVar; var highlightsVar; var test3; var test4; function switcher(divToShow, thisVar, otherVar, url, div){ $("#site-nav li a").parents().removeClass("nav-activ

对于这段代码,我没有从jshint或控制台收到任何错误。但是,我的ajax内容并没有发布到预期的div。但是,警报会触发:

    var recentVar;
    var highlightsVar;
    var test3;
    var test4;

function switcher(divToShow, thisVar, otherVar, url, div){
    $("#site-nav li a").parents().removeClass("nav-active");
        $(div).addClass("nav-active");
        if (otherVar){ $(otherVar).detach();}

        if(typeof thisVar === 'undefined') {
            thisVar = $(divToShow + " ul.top-level").load("assets/includes/" + url, function () {
                alert("I'm new");
            });
        } else {
            $(thisVar).appendTo("#content-listing");
            alert("I'm old");
        }
}

    //Recent
    $("#site-nav .nav1").on("click", function (event) {
    switcher("#recent", "recentVar", "highlightsVar", "recent.php", "#site-nav .nav1");
    event.preventDefault();
    });

    //Highlights
    $("#site-nav .nav2").on("click", function (event) {
    switcher("#highlights", "highlightsVar", "recentVar", "all-web.php", "#site-nav .nav2");
    event.preventDefault();
    });

在执行切换器时,thisVar总是一个字符串。它永远不会有未定义的类型。看起来您还想传入一个对象(由于声明的变量),但是。。。如上所述,您总是传递字符串

[根据詹姆斯·蒙塔涅的评论]

试试这个:

if(typeof thisVar === 'undefined') {
        thisVar = $(divToShow + " ul.top-level").load("assets/includes/" + url, function () {
            alert("I'm new");
        });
    } else {
        $(thisVar).appendTo($("#content-listing"));
        alert("I'm old");
    }

AMAIK,jQuery的
load()
方法直接将结果插入调用对象。因此,结果应该加载到
$(divToShow+“ul.top-level”)
元素中。您检查过了吗?

如果当前文档不包含ID为
divToShow+“ul.top-level”
的元素,则不会执行
.load()
方法


尝试Firebug或类似的东西来跟踪请求。也许您的回答有问题。

这与AJAX无关,但我认为您的问题就在这里

$(thisVar)
thisVar
只是文本。如果选中,您将看到
$(thisVar).length
为0。这是因为您正在调用:
$(“recentVar”)
,它将搜索类型为
的任何元素,而这些元素显然不存在。如果要附加该文本,可以使用
append
或创建一个元素,将文本设置为
recentVar
并附加该文本

编辑:另一个问题:

$(divToShow + "ul.top-level")
您需要在此处留出空间:

$(divToShow + " ul.top-level")
否则,您将尝试匹配最近的顶级,这是胡说八道



在执行switcher时,thisVar总是一个字符串。它永远不会有未定义的类型。看起来您还想传入一个对象(由于声明的变量),但是。。。如上所述,你总是在传递一个字符串。如果有什么帮助,这里有一把小提琴。ajax内容应该一次加载一个,替换任何可见的内容:@GregPettit我会回答这个问题。根据发布的代码,
thisVar
从来都是
未定义的
,因此从来没有进行过ajax调用。指出您对原始代码所做的更改非常有帮助。是的,在单击时,就ajax而言,不会向dom写入任何内容。谢谢,这些元素都包含在页面中。如果有帮助的话,这里有一把小提琴:我试图做的是
detach()div,以便一次只显示一个div。我想使用detach();因此,我不必从数据库重新加载不必要的内容。有没有比我所做的更好的方法,因为我尝试的方法显然不起作用。如果有用的话,这里有一把小提琴:但是什么是
highlightsVar
recentVar
。这些都没什么。我的印象是要
detach()我需要将div保存在变量中。这是我试图为每个div分配一个var(
highlightsVar
recentVar
),检查它们是否存在,是否将其附加到
#内容列表中,如果不存在,则分配var并将ajax加载到其各自的div中。好的,您正在传递一个包含变量名称的字符串并使用它,不使用变量本身。谢谢。这可能就是问题所在。但是如何传递变量呢?