如果存在,如何包含外部 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,否则啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章