0

如何向此脚本添加 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;
    });
});
4

2 回答 2

0

如果我理解正确,核心问题是 load() 不起作用。这可能是因为您的网址有一个井号标签,前面有一个空格:“url #conten”。

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

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

于 2012-08-22T18:23:08.903 回答
0

http://api.jquery.com/load/

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

$('#element').load(url, function() { console.log('content loaded'); });
$('#element').load(url, {some: 'parameters'}, function() { console.log('content loaded'); });

在不知道页面布局和请求页面的通用示例的情况下,很难猜测会发生什么,但是:

  1. 您指定“#conten”中的内容应取自请求的页面并放入当前页面的“#conten”中——两个页面上都定义了“#conten”吗?

  2. 您是否尝试设置断点以确认正在调用负载/您是否检查过请求已发送并验证其内容?

  3. 您已经在父范围和子范围中定义了 href ——虽然它们看起来没有混淆,但唯一的变量名将减少它们混淆的机会并使代码更易于阅读。

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

于 2012-08-22T18:40:03.780 回答