2016-12-15 68 views
1

我们假设我需要使用文件名中的相对路径进行AJAX请求,而不使用windows.location(由于客户特定请求)。从文件名(不带windows.location)的Javascript相对路径

所以,一个hypotetical页:mywebsite/myfolder/mypagename,我需要做的是这样的:

 
$.get("./data/mydata.json", function(data) { 
    .... 
}); 

这样的要求点:mywebsite/myfolder/data/mydata.json,但我也需要点:mywebsite/myfolder/mypagename/data/mydata.json

是有没有办法做到这一点?我也tryed "~/data/mydata.json"但似乎发送任何Ajax调用之前为"./data..."

+0

我不认为你可以做到这一点,而无需使用windows.location – GiuServ

+0

不能使用windows.location由于客户的要求。它有一些SAST的后果,客户不想使用它。 – freecloud

+0

所以使用像你这样的图像,CSS,JavaScript等相对路径...... – epascarello

回答

0

由于我要问,似乎不可能,我使用windows.location.pathname上的URL验证正则表达式的工作:

 
if (! (/([<>]|javascript:)/.test(decodeURIComponent(apiUrl)))) { 

    ... do the call 

} else { 

    window.location.href = '/404'; 

} 

希望它可以帮助别人

+0

这是如何回答你的原始问题? – epascarello

+0

它没有。这是一个解决方案:我让我的客户接受使用windows.location,但我做了一个URL检查,以防止任何写在URL上的js被处理。 因此,如果有人打电话给这样的页面:/ mypage/正则表达式重定向到404。 – freecloud

+0

我不确定XSS会如何影响你...我仍然想知道为什么你不能使用相对路径。 – epascarello