8

我真的不明白这个。我有以下“获取”请求:

$.ajax( {
    url: "api/getdirectories/",
    dataType: 'json',
    success: function ( data ) {
        // Do stuff
    }
} );

这是在我的登台服务器为我提供的页面中,http://atlas/Reporter. 在我的本地开发盒上,这是可行的,并且在查看 fiddler 时,我看到了正确的 URL http://localhost/Reporter/api/getdirectories。然而,在登台服务器上,请求是 to http://atlas/api/getdirectories,这是无效的,我收到 404 错误。

为什么我的路径中的“报告者”部分被丢弃在登台服务器上?在查看文档时,URL、baseURI、documentURI 都是http://atlas/Reporter,域是atlas。与我的本地开发盒完全相同(除了它都是“localhost”而不是“atlas”。

这个问题已经困扰了我一段时间了。我想我已经弄清楚了,一切都很好,然后我又遇到了。我不认为这是同源策略问题,因为我从页面来源的同一站点请求数据。

那么,请求的完整 url 究竟是如何确定的呢?它似乎不是上面提到的被连接到我的相对 URL 上的文档变量之一......那么它是如何工作的?

Edit: Removed the '/' from the URL as it is distracting from the real issue- behavior is the same with or without it.

4

5 回答 5

16

不确定这是否相关,但是当 jQuery ajax 构建相对 url 时,当前页面 url 是否以“/”结尾很重要


如果您调用没有结尾的页面/

http://atlas/Reporter  

该页面上来自 ajax 调用的相对 url 忽略了最后一段:

http://atlas/_relative_url_passed_to_ajax

如果您以/

http://atlas/Reporter/  

相对 url 使用最后一个路径段Reporter

http://atlas/Reporter/_relative_url_passed_to_ajax
于 2016-01-25T20:25:05.203 回答
9

/在 URL 的开头使其绝对。

您可能需要一个相对 URL,即

api/getdirectories/

或者

getdirectories/

或者

../api/getdirectories/
于 2013-03-28T17:09:13.457 回答
0

检查服务器上的 document_root 或者是否声明了一些虚拟服务器

于 2013-03-28T17:08:11.513 回答
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) {
            },
        });
于 2020-10-26T20:38:50.473 回答
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>
于 2017-08-02T11:47:47.737 回答