Nik*_*kko 4 javascript ajax jquery
首先,让我向您展示文件夹结构:
public_html[]
|_ project_folder[]
|_another_folder[]
|_xml_folder[]
|_xmlfile.xml
|_ js_folder[]
|_javascriptfile.js
|_ file.html
|_ file2.html
Run Code Online (Sandbox Code Playgroud)
我有一些file.html和file2.html加载,在文档加载时使用jQuery ajax。Ajax使用以下代码:
$(document).ready(function()
{
$.ajax({
type: "GET",
url: "xml/xmlfile.xml",
dataType: "xml",
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
当在文件的根目录下找到HTML文件时,这些文件就可以正常工作(就像现在一样)
现在,当我将html文件移至文件夹(例如,将file2.html移至another_folder)时,加载xml文件不再起作用。不用说我已经在html上更改了必要的src标记,即:从src \“ js / javascriptfile.js”更改为src = \“ ../ js / javascriptfile.js”。
我没有更改的是javascript文件上的“网址”。现在,由于XML正在尝试在其自己的目录(another_folder / xml / xmlfile.xml)中而不是从其所在的根目录中查找XML文件,因此未加载XML。
我的问题是,为了避免这个问题应该怎么做?
在js文件中使用绝对URL,例如
'/project/xml/xmlfile.xml'
Run Code Online (Sandbox Code Playgroud)
如果您希望它比以前更通用,那么您还可以做其他事情,例如读取当前url并从中构建ajax url。
更新:回复评论有关如何生成正确路径的示例。如果项目始终是第一个子目录,则应该可以构建正确的url。
function xml_url(){
var first_dir_regexp = /https?:\/\/[^\/]+\/([^\/]+)\/.+/;
matches = first_dir_regexp.exec(document.location.toString());
return matches[1]+"/xml/xmlfile.xml";
}
//...
xml_url()
Run Code Online (Sandbox Code Playgroud)
此代码使用正则表达式提取URL的第一个目录,并将/xml/xmlfile.xml附加到该目录。
例如, 如果页面为example.com/project1/awesome/index.html,则返回example.com/project1/xml/xmlfile.xml
请注意,此代码非常脆弱,您可能需要对其添加一些检查。这只是一个例子。
如果您的项目深度不止一个级别,则应考虑添加一些配置设置,以使javascript进一步了解其运行环境。
| 归档时间: |
|
| 查看次数: |
17923 次 |
| 最近记录: |