2011-10-05 75 views
1

花了3小时阅读参考,但仍然没有效果,所以在这里问。通过jQuery加载本地文件

操作系统:Windows 7(是相关的?)
浏览器:歌剧11.51
jQuery的:在本地计算机上1.6.2


两个文件,main.html中菜单。 html在同一个文件夹中。

main.html中:

<html> 
    <head> 
    <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     // append contents 
     $('#menu').load('menu.html'); 
     }); 
    </script> 
    </head> 
    <body> 
    <table> 
     <tr> 
     <td id="menu"></td> 
     </tr> 
    </table> 
    </body> 
</html> 

menu.html:

<html> 
    <head></head> 
    <body> 
    menu tree 
    </body> 
</html> 

正如我想,当我打开main.html中,应该有一个表,包含 “菜单树” 一个细胞串。例如,它适用于IE。但Opera没有显示任何结果。

我用load()的可选回调调试了东西,它显示load()的结果状态是“error”。

我在做什么错?

+0

您是在Web服务器('http://')还是文件夹('file://)下运行? –

+0

我在本地文件夹中运行。 – iehrlich

回答

4

在Opera中,您必须设置标志Allow File XMLHttpRequest(opera:cofig - User Prefs)。

在谷歌浏览器中,您必须使用选项参数 - 允许运行浏览器的文件访问文件,例如:“C:\ Documents and Settings \ User \ Local Settings \ Application Data \ Google \ Chrome \ Application \ chrome.exe“ - 允许从文件访问文件

+0

是的,这有帮助,但还有一个问题。这种结构(意思是界面HTML文件和许多其他交叉引用的文件被上传到接口)旨在被部署在CD盘上并交付给最终用户。当然,要求每个最终用户打开和关闭浏览器标志都是不可选的。这个问题是否有一个通用的解决方案? – iehrlich

+0

如果它在CD上,那么它是静态的 - 为什么你动态加载菜单?只需添加html而不使用js。 –

0

您可能想要摆脱Menu.html中的<body>,<head><html>标记。

您现在的做法是无效的HTML,因为文档中只允许有一个<body>,<head><html>标记。

变化Menu.Html到

<p> 
    Menu 
</p> 

试一下!

+0

这样做,但仍然没有效果。 – iehrlich

+0

确保你也在服务器上。就像不在本地主机上一样,这可能是你的问题。 – Eganr