Jquery ajax和相关URL

Jquery ajax和相关URL,jquery,ajax,xmlhttprequest,Jquery,Ajax,Xmlhttprequest,我真的不明白。我有以下“获取”请求: $.ajax( { url: "api/getdirectories/", dataType: 'json', success: function ( data ) { // Do stuff } } ); 这是我的登台服务器提供给我的页面,http://atlas/Reporter。在我的本地开发框中,这是可行的,在查看fiddler时,我看到了正确的URLhttp://localhost/Reporter

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

$.ajax( {
    url: "api/getdirectories/",
    dataType: 'json',
    success: function ( data ) {
        // Do stuff
    }
} );
这是我的登台服务器提供给我的页面,
http://atlas/Reporter
。在我的本地开发框中,这是可行的,在查看fiddler时,我看到了正确的URL
http://localhost/Reporter/api/getdirectories
。但是,在临时服务器上,请求是
http://atlas/api/getdirectories
,这是无效的,我得到一个404错误

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

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

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


编辑:从URL中删除“/”,因为它会分散对真实问题的注意力-无论是否使用它,行为都是相同的。

检查服务器上的文档根目录,或者如果在URL开头声明了一些虚拟服务器,则会使其成为绝对的

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

api/getdirectories/


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


如果调用页面时没有结尾
/

http://atlas/Reporter  
http://atlas/Reporter/  
该页面上ajax调用的相对URL忽略了最后一段:

http://atlas/_relative_url_passed_to_ajax

如果以
/
结尾:

http://atlas/Reporter  
http://atlas/Reporter/  
相对URL使用的是最后一个路径段
Reporter

http://atlas/Reporter/_relative_url_passed_to_ajax

tst
数据表
身份证件
名称
位置
$(函数(){
$.ajax({
url:'datas.txt',
类型:'post',
数据类型:'json',
成功:功能(响应){
var myDataBunch=$.parseJSON(响应);
var-txt='';

对于(var i=0;i我也有同样的问题,我认为我已经解决了,因为我的一些AJAX URL已经在处理相对URL,但我很困惑为什么我的一些AJAX调用没有按预期工作。这是我的第一个问题:

$.ajax({
            url: '/Controller/GetFiles',
            type: 'GET',
            dataType: 'json',
            data: { id: id },
            success: function (data) {
               //Business Logic Here
            },
            error: function (err) {
            },
        });
最初我的URL是
/Controller/GetFiles'
。但在将其部署到需要相对URL的临时站点时,这将不起作用。因此为了修复它。我需要删除URL上的
/

但后来我注意到,我的一些相同格式的URL仍然不起作用。解决方案是在我的URL末尾添加额外的
/
。下面是结束格式:

$.ajax({
            url: 'Controller/GetFiles/',   
            type: 'GET',
            dataType: 'json',
            data: { id: id },
            success: function (data) {
               //Business Logic Here
            },
            error: function (err) {
            },
        });

您的URL不应该是
api/getdirectories/
而不是
/api/getdirectories/
?您是否尝试过URL:“api/getdirectories/”,我尝试了
api/getdirectories
,效果相同。您的HTML文件的路径是什么?您在浏览器中使用什么URL打开它?@dystroy正确的路径是
http://atlas/reporter/api/getdirectores
。这是托管在我的服务器上的web.api应用程序。无论如何,
Reporter
部分缺失。在我的情况下,url最终是相同的(错误的)地址。您的HTML文件的路径是什么?您在浏览器中使用什么URL打开它?正确的路径是
http://atlas/reporter/api/getdirectores
。这是一个托管在我的服务器上的web.api应用程序。这解决了我的问题—在开始时删除斜杠。谢谢。这很有趣—只是我不知道如何在我的IIS上检查服务器…我在哪里可以找到它?我查看了我站点的IIS设置-我在高级设置中看到的唯一内容是“虚拟路径”。但在我的暂存服务器和本地开发框上,该值是相同的。:(抱歉,我不知道IIS,但某处必须有一个配置文件…这是肯定的
$.ajax({
            url: 'Controller/GetFiles/',   
            type: 'GET',
            dataType: 'json',
            data: { id: id },
            success: function (data) {
               //Business Logic Here
            },
            error: function (err) {
            },
        });