Ajax 验证不是空页的响应数据

Ajax validate response data that is not an empty page

本文关键字:响应 数据 验证 Ajax      更新时间:2023-09-26

我正在使用Ajax填充页面(服务器端),然后获取内容并显示在主窗口中。我对 Ajax 没有问题,只是很多时候响应数据是一个空页面<html></html>.
当我签入控制台 ->网络>页面.html 时,

  • 状态代码为"正常"

    响应标头

  • HTTP/1.1 200 OK
  • 杂注:无缓存
  • 刷新: 1;URL=http://balbla.com/page.html
  • 连接:关闭
  • 内容类型:文本/html

然后在响应选项卡中 -> <HTML></HTML>

我的问题是,在运行以下命令之前,如何在成功函数中验证数据不是空的 html 页面,否则,我最终会得到一个空白页面。

$.ajax({
type: "POST",
url: 'http://balbla.com/page.html',
data: 'country=' + user_country,
success: function(data) {
    $pageWrap.fadeOut(1000, function() {
        $('link[href="css/main.css"]').attr('href', $css);
        $pageWrap.hide().html(data).fadeIn(500);
        $.getScript($scripts);
    });
},
error: function(xhr, textStatus, error) {
    alert('Error Fecthing page')  ;  }
});

谢谢

您可以从响应字符串中删除 html 标记,然后计算其长度。

HTML

标签条带功能取自: 从文本 JavaScript 中剥离 HTML

function strip(html)
{
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   return tmp.textContent || tmp.innerText || "";
}

然后在 ajax 函数中:

success: function(data) {
if(strip(data).length > 0) {
   // content is not empty
}

这样做:

success: function(data) {
if(data !=="<HTML></HTML>"){
    $pageWrap.fadeOut(1000, function() {
        $('link[href="css/main.css"]').attr('href', $css);
        $pageWrap.hide().html(data).fadeIn(500);
        $.getScript($scripts);
    });
}
}