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时,我看到了正确的URLhttp://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) {
},
});