向该脚本添加AJAX回调函数

向该脚本添加AJAX回调函数,ajax,Ajax,如何将AJAX回调函数添加到此脚本中 此脚本使用AJAX加载内容而不刷新页面,但它不加载脚本。我想如果我添加一个回调函数,脚本就会加载 $(document).ready(function () { var hash = window.location.hash.substr(1); var href = $('#nav li a').each(function () { var href = $(this).attr('href'); if (

如何将AJAX回调函数添加到此脚本中

此脚本使用AJAX加载内容而不刷新页面,但它不加载脚本。我想如果我添加一个回调函数,脚本就会加载

$(document).ready(function () {

    var hash = window.location.hash.substr(1);
    var href = $('#nav li a').each(function () {
        var href = $(this).attr('href');
        if (hash == href.substr(0, href.length - 5)) {
            var toLoad = hash + '.php #conten';
            $('#conten').load(toLoad)
        }
    });

    $('#nav li a').click(function () {

        var toLoad = $(this).attr('href') + ' #conten';
        $('#conten').hide('fast', loadContent);
        $('#load').remove();
        $('#conten').append('<span id="load"></span>');
        $('#load').fadeIn('normal');
        window.location.hash = $(this).attr('href').substr(0, $(this).attr('href').length - 5);

        function loadContent() {
            $('#conten').load(toLoad, '', showNewContent)
        }

        function showNewContent() {
            $('#conten').show('normal', hideLoader());
        }

        function hideLoader() {
            $('#load').fadeOut('normal');
        }

        return false;
    });
});
$(文档).ready(函数(){
var hash=window.location.hash.substr(1);
var href=$('#nav li a')。每个(函数(){
var href=$(this.attr('href');
if(hash==href.substr(0,href.length-5)){
var toLoad=hash+'.php#conten';
$('#conten')。加载(toLoad)
}
});
$(“#nav li a”)。单击(函数(){
var toLoad=$(this.attr('href')+'#conten';
$(“#conten”).hide('fast',loadContent);
$(“#加载”).remove();
$('#conten')。附加('');
$('加载').fadeIn('正常');
window.location.hash=$(this.attr('href').substr(0,$(this.attr('href').length-5);
函数loadContent(){
$('#conten').load(toLoad',showNewContent)
}
函数showNewContent(){
$('#conten').show('normal',hideLoader());
}
函数hideLoader(){
$('加载').fadeOut('正常');
}
返回false;
});
});

如果我理解正确,核心问题是load()无法工作。这可能是因为您的url有一个哈希标记,前面有一个空格:“url#conten”

首先,哈希必须连接到url:“url#conten”。 第二,url中的哈希被服务器忽略;它们仅由客户端(浏览器)解释

如果这没有帮助,我建议使用浏览器中的调试工具查看服务器的响应。

要加载的第二个参数可以是回调,如果您也要向服务器传递数据,则第三个参数可以是回调:

$('#element').load(url, function() { console.log('content loaded'); });
$('#element').load(url, {some: 'parameters'}, function() { console.log('content loaded'); });
在不知道页面布局和请求页面的一般示例的情况下,很难猜测会发生什么,但是:

  • 您正在指定“#conten”中的内容应取自请求的页面,并放在当前页面的“#conten”中--两个页面上是否都定义了“#conten”

  • 您是否已尝试设置断点以确认正在调用load/是否已检查请求是否已发送并验证其内容

  • 您已经在父作用域和子作用域中定义了href——虽然它们看起来没有混淆,但唯一的变量名将减少它们混淆的可能性,并使代码更易于阅读


  • 如果这些都没有帮助,您是否有一个HTML示例来演示您可以提供的问题?

    u您认为脚本没有加载是因为load()。。。。那么,我应该在这个代码中更改什么??@cjc343您是对的;我不知道这个复杂的语法!默罕默德:当时还是很好奇空格的问题是什么……在stackoverflow感谢某人的通常方式是接受正确的答案,或者投票表决。@Tom没有空格#conten会成为url的一部分(如您所述),并且会被忽略(如您所述)。在空间存在的情况下,load正在load获取的页面的DOM中搜索#conten。如果获取的页面上不存在#conten,则没有可插入的内容。似乎#conten存在于当前页面上,但不存在于检索到的数据中。虽然这是一个有效的用法,但它似乎不是人们想要的。