Javascript .ajax()与.load()的等价物是什么?

Javascript .ajax()与.load()的等价物是什么?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我使用ajax请求从服务器检索文本字符串。我曾尝试使用.load(),但问题是它在运行回调函数(它只是逐字显示文本)之前将文本注入页面 因此,为了缓解这种情况,我转到了.ajax(),并在成功回调中使用了我的函数。这种方式可以一个字母一个字母地显示文本 这是我的问题。当服务器没有更多字符串时,站点应该将您重定向到另一个页面。这正是使用.load()时发生的情况 但是,当使用.ajax()时,来自服务器的原始HTML被注入到当前页面中,并且没有正确呈现 我不知道如何解决这个问题,我已经在网上搜索了

我使用ajax请求从服务器检索文本字符串。我曾尝试使用.load(),但问题是它在运行回调函数(它只是逐字显示文本)之前将文本注入页面

因此,为了缓解这种情况,我转到了.ajax(),并在成功回调中使用了我的函数。这种方式可以一个字母一个字母地显示文本

这是我的问题。当服务器没有更多字符串时,站点应该将您重定向到另一个页面。这正是使用.load()时发生的情况

但是,当使用.ajax()时,来自服务器的原始HTML被注入到当前页面中,并且没有正确呈现

我不知道如何解决这个问题,我已经在网上搜索了很长一段时间了。下面是每个方法的代码

.load()方法(无逐字回调)

.ajax()方法(使用逐字回调)

万一你需要lbyl函数

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);
        }
      }
   });
});