我真的不明白。我有以下内容' get'请求:
$.ajax( {
url: "api/getdirectories/",
dataType: 'json',
success: function ( data ) {
// Do stuff
}
} );
这是我的登台服务器http://atlas/Reporter
提供给我的页面。在我的本地开发框中,这是有效的,并且在查看提琴手时,我看到了正确的URL http://localhost/Reporter/api/getdirectories
。然而,在登台服务器上,请求是http://atlas/api/getdirectories
,这是无效的,我收到404错误。
为什么'记者'我的路径的一部分被丢弃在登台服务器上?在查看文档时,URL,baseURI,documentURI均为http://atlas/Reporter
,域名为atlas
。与我当地的开发箱完全相同(除了全部' localhost'而不是' atlas'。
这个问题困扰了我一段时间了。我想我已经弄明白了,一切都很好,然后再次遇到它。我不认为这是一个相同的原始政策问题,因为我要求来自该网页的同一网站的数据。
那么,为请求确定的完整网址究竟是怎样的?它似乎不是上面提到的文档变量之一连接到我的相对URL ...所以这是如何工作的?
Edit: Removed the '/' from the URL as it is distracting from the real issue- behavior is the same with or without it.
答案 0 :(得分:11)
不确定这是否相关,但是当jQuery ajax构建相对网址时,如果当前网页网址以“/”结尾,则无关紧要
如果您调用的页面没有结尾/
:
http://atlas/Reporter
来自该页面上的ajax调用的相对URL忽略了最后一段:
http://atlas/_relative_url_passed_to_ajax
如果以/
结尾:
http://atlas/Reporter/
相对网址正在使用最后一个路径段Reporter
:
http://atlas/Reporter/_relative_url_passed_to_ajax
答案 1 :(得分:7)
/
使其成为绝对的。
您可能需要相对网址,即
api/getdirectories/
或
getdirectories/
或
../api/getdirectories/
答案 2 :(得分:0)
检查服务器上的document_root或者是否声明了某些虚拟服务器
答案 3 :(得分:0)
<html>
<head>
<title>tst</title>
</head>
<body>
<h1>Data list</h1>
<table border="1" width="50%" id="tblData">
<tr>
<th>Id</th>
<th>Name</th>
<th>Location</th>
</tr>
</table>
<script src="jquery.min.js"></script>
<script>
$(function(){
$.ajax({
url:'datas.txt',
type:'post',
datatype:'json',
success:function(response){
var myDataBunch = $.parseJSON(response);
var txt = '';
for(var i=0; i<myDataBunch.length; i++){
txt+= '<tr><td>'+ myDataBunch[i].id +'</td><td>'+ myDataBunch[i].name +'</td><td>'+myDataBunch[i].location+'</td></tr>'
}
$('#tblData').append(txt);
}
})
});
</script>
</body>
</html>
答案 4 :(得分:0)
我有同样的问题,我想我已经修复了它,因为我的一些AJAX URL已经在相对URL上工作了,但是我很困惑为什么我的一些AJAX调用不能按预期工作。这是我的第一个问题:
$.ajax({
url: '/Controller/GetFiles',
type: 'GET',
dataType: 'json',
data: { id: id },
success: function (data) {
//Business Logic Here
},
error: function (err) {
},
});
最初,我的网址是/Controller/GetFiles'
。但是,将其部署到需要相对URL的登台站点时,将无法使用。因此为了修复它。我需要删除网址上的/
。
但是后来我发现我的某些具有相同格式的URL仍然无法使用。解决方案?在我的URL末尾添加其他/
。这是结束格式:
$.ajax({
url: 'Controller/GetFiles/',
type: 'GET',
dataType: 'json',
data: { id: id },
success: function (data) {
//Business Logic Here
},
error: function (err) {
},
});