Javascript .ajax()与.load()的等价物是什么?
我使用ajax请求从服务器检索文本字符串。我曾尝试使用.load(),但问题是它在运行回调函数(它只是逐字显示文本)之前将文本注入页面 因此,为了缓解这种情况,我转到了.ajax(),并在成功回调中使用了我的函数。这种方式可以一个字母一个字母地显示文本 这是我的问题。当服务器没有更多字符串时,站点应该将您重定向到另一个页面。这正是使用.load()时发生的情况 但是,当使用.ajax()时,来自服务器的原始HTML被注入到当前页面中,并且没有正确呈现 我不知道如何解决这个问题,我已经在网上搜索了很长一段时间了。下面是每个方法的代码 .load()方法(无逐字回调) .ajax()方法(使用逐字回调) 万一你需要lbyl函数Javascript .ajax()与.load()的等价物是什么?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我使用ajax请求从服务器检索文本字符串。我曾尝试使用.load(),但问题是它在运行回调函数(它只是逐字显示文本)之前将文本注入页面 因此,为了缓解这种情况,我转到了.ajax(),并在成功回调中使用了我的函数。这种方式可以一个字母一个字母地显示文本 这是我的问题。当服务器没有更多字符串时,站点应该将您重定向到另一个页面。这正是使用.load()时发生的情况 但是,当使用.ajax()时,来自服务器的原始HTML被注入到当前页面中,并且没有正确呈现 我不知道如何解决这个问题,我已经在网上搜索了
var lbyl = function (target, message, index, interval) {
if (index < message.length) {
$(target).append(message[index++]);
setTimeout(function () {
lbyl(target, message, index, interval);
}, interval);
}
};
var lbyl=函数(目标、消息、索引、间隔){
if(索引<消息长度){
$(目标).append(消息[index++]);
setTimeout(函数(){
lbyl(目标、消息、索引、间隔);
},间隔);
}
};
任何帮助都将不胜感激。要直接回答您的问题,与
$('thonow').load('next.php')
等效的ajax()
将是:
jQuery.ajax('next.php', {
type: 'GET',
dataType: 'html'
}).done(function (response) {
$('#thonow').html(response);
});
请注意,load()
具有,因此并非所有的load()
调用都等同于此ajax()
调用,但在这种情况下,它是
然而,这实际上无助于解决您的问题。由于您的
lbyl
函数append()
是一次一个字符的响应,jQuery将每个字符视为文本
节点*,而不是load()
将其视为的HTML字符串。这就是为什么您看到输出的是HTML字符串,而不是解析的HTML字符串
*append()
您真正需要做的是检测响应是“整页刷新”还是“letter by letter响应”。根据您的需求,您可以通过以下方式完成此操作:
$('#nextButton').click(function(){
$.ajax({
url: 'next.php',
dataType: 'text',
success: function(result) {
if (result.slice(0, 15) === '<!DOCTYPE html>') {
document.write(result);
document.close();
} else {
$('#thonow').html("");
lbyl('#thonow',result,0,50);
}
}
});
});
$('nextButton')。单击(函数(){
$.ajax({
url:'next.php',
数据类型:“文本”,
成功:功能(结果){
如果(结果切片(0,15)=''){
记录(结果);
document.close();
}否则{
$('#thonow').html(“”);
lbyl('thonow',结果,0,50);
}
}
});
});
注意,通过AJAX替换整个页面有点“代码味道”。我宁愿将用户重定向到新的URL,或者只替换
或其后代的页面。函数.load()
只是$.ajax()
的一个方便的前端。是的,我理解,但底层设置是什么?换句话说,我需要在我的.ajax()函数中做些什么,以便最后一个请求重定向到一个页面,而不是注入原始HTML?@MikelG:自己看看:)@Matt是的,我已经盯着它看了30分钟了。不幸的是,这有点让我不知所措。我对编码还是很陌生。不过我还在努力。。。希望我能看到一些东西或有一点洞察力。@MikelG:啊。我猜当你说“该站点应该将你重定向到另一个页面”时,你的意思是该站点用AJAX调用的响应替换当前页面,而不是通过HTTP请求将用户重定向到另一个URL?这很有效!非常感谢你。我将在下面研究你的建议。再次感谢您抽出时间来帮忙@米克尔:没问题。很高兴它有帮助:)。
jQuery.ajax('next.php', {
type: 'GET',
dataType: 'html'
}).done(function (response) {
$('#thonow').html(response);
});
$('#nextButton').click(function(){
$.ajax({
url: 'next.php',
dataType: 'text',
success: function(result) {
if (result.slice(0, 15) === '<!DOCTYPE html>') {
document.write(result);
document.close();
} else {
$('#thonow').html("");
lbyl('#thonow',result,0,50);
}
}
});
});