如何在此脚本中添加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;
});
});
答案 0 :(得分:0)
如果我理解正确,核心问题是load()不起作用。这可能是因为您的网址有一个哈希标记,前面有一个空格:“url #conten”。
首先,哈希必须连接到url:“url#conten”。 其次,服务器忽略url中的哈希值;它们只能由客户端(浏览器)解释。
如果这没有帮助,我建议您在浏览器中使用调试工具来查看服务器的响应。
答案 1 :(得分:0)
要加载的第二个参数可以是回调,如果您还要将数据传递到服务器,则为第3个参数:
$('#element').load(url, function() { console.log('content loaded'); });
$('#element').load(url, {some: 'parameters'}, function() { console.log('content loaded'); });
如果不知道您的页面布局和您要求的页面的一般示例,很难猜测可能会发生什么,但是:
您指定来自“#conten”的内容应从请求的页面中获取并放入当前页面的“#conten” - 两个页面上都定义了“#conten”吗?
您是否尝试过设置断点以确认正在调用加载/您是否检查过请求已发送并验证其内容?
您已经在父级和子级范围内定义了href - 虽然它们似乎没有混淆,但唯一的变量名称会降低它们混淆的机会并使代码更容易读取。
如果这些都没有帮助,您是否有一个HTML示例来演示您可以提供的问题?