如果存在,如何包含外部 html,否则啥都不做?

Posted

技术标签:

【中文标题】如果存在,如何包含外部 html,否则啥都不做?【英文标题】:How to include external html if exists, else do nothing?如果存在,如何包含外部 html,否则什么都不做? 【发布时间】:2011-02-01 14:22:20 【问题描述】:

我有一个使用 jquery 的页面,我想检测是否存在外部文件。如果有,我想将它加载到一个 div 中,但如果没有,我希望它什么也不做。

我正在使用此代码,它可以加载文件,但如果外部文件不存在,它会加载 404 错误页面。我是 jquery 的新手,非常感谢任何帮助。此外,检查文件的方法需要具有 rootdomain+,以便代码可以插入多个站点而无需编辑。

$(function() 
      $('#test').load('/pages/test.html');
);

任何帮助将不胜感激。我已经搜索了好几天,但我发现的唯一东西是头部检查脚本,如果 url 无效,这些脚本无法选择不执行任何操作。我很想知道如何自己编写这个简单的代码,但现在它已经超出了我的想象。 :)

杰里

【问题讨论】:

【参考方案1】:

尝试使用ajax() 方法而不是load() 并在成功回调中设置您的html()

$(function() 
    $.ajax(
        url: "/pages/test.html",
        cache: false,
        dataType: "html",
        success: function(html)
            $('#test').html(html);
        
    );
);

【讨论】:

好的,显然我做错了,因为这里的示例都不适用于我。实际的代码不使用带有 .html 扩展名的 url。站点的后端最终将页面命名为“pages/test/”,没有后缀。这应该仍然有效吗?因为它没有。【参考方案2】:

使用 Ajax 调用:

$.ajax(
  url: '/pages/test.html',
  success: function(data)
      $('#test').html(data);
  ,
  statusCode: 404: function() 
    $('#test').html('Unable to retrieve data. Please try again');
  
);

【讨论】:

哇,我发布了和你一样的答案!【参考方案3】:

我考虑过做类似的事情。我会用 Ajax 来解决它。谷歌搜索产生了其他人已经构建的代码 [XUL Ajax 站点][1] 似乎可以满足您的需求——假设使用 Ajax 加载其他页面是可以的。

通过一些编码,您可以使用此技巧来显示任何内容、消息或其他页面(如果找不到您想要的页面)...现在,代码将显示 404 存在,但是这是一个相当微不足道的变化。事实上,如果您下载页面底部的脚本存档,并打开 responseHTML.js 文件,您可以取消注释一行,使其在其他页面不存在时不执行任何操作。

代码示例使用硬编码的 div 名称,但您可以轻松地将其更改为您自己的名称,或修改函数以接受它们作为参数。我计划在不久的将来在我自己的一个网站上使用此代码,如果另一个页面关闭,则需要重定向。

如果不使用 Ajax,我想不出一个好方法来做到这一点......

嗯。我在工作时分心了,无论如何链接都没有加载。其他答案基本相同,对于 jQuery 来说甚至更简单。原始 javascript 也适用于不使用 jquery 的页面,因此仍然值得在此处保留链接。

http://www.xul.fr/ajax/responseHTML-attribute.html

【讨论】:

以上是关于如果存在,如何包含外部 html,否则啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章

C++(0x) 中是不是存在无操作“啥都不做”函数对象?

“git diff”啥都不做

R:如何在向量上使用类似“if”的函数但没有“ifelse”,因为如果没有,它应该啥都不做

Solididity HTML 脚本啥都不做

想让 HTML 表单提交啥都不做

DotNet Pack 啥都不做