2012-12-27 92 views
2

为什么在示例一中的url与$.get一起使用,但示例二中的URL不是?有没有办法让示例二的工作?

例一

$.get("http://localhost/magic/pages/tcgqueryoutput.php", 
    function(data, statusTxt){ 
     $('#tcg_query_output').html(data); 
    }); 

例二

$.get("tcgqueryoutput.php", 
    function(data, statusTxt){ 
     $('#tcg_query_output').html(data); 
    }); 
+1

检查您的http日志以查看第二个示例解决的路径。 – user1884047

+0

在不知道正在创建什么目录请求的情况下无法应答,或者您是否有任何MOD Rewrite或页面中的Meta Base。检查浏览器控制台以查看实际请求还使用了哪个URL – charlietfl

+0

带有$ .get脚本的文件与请求文件位于同一目录中。马修在这里有正确的答案:我需要更清楚地指定相对路径 - “/magic/pages/tcgqueryoutput.php”。我不明白的是为什么使用文件字符串在。$ get的在线示例中起作用。 – alrightgame

回答

2

例二是基于切断电流基本URL的。所以这个工作完全依赖于你的web应用程序的url路由/目录结构。

编辑:

在这种情况下,我会想象它正试图为默认下面的路线(假设该路由被从根目录的目标):

http://localhost/tcgqueryoutput.php

因此,您需要在相关网址中指定更多,以便正确解析。

+0

路径“/magic/pages/tcgqueryoutput.php”是必需的。仍然没有完整的答案,为什么单个文件字符串不起作用,但我想我需要忍受它。 – alrightgame

+0

所以你不能像你提供的那样做单个文件的URL的原因很简单,因为你的Web服务器不知道该页面存在的位置。如何知道在magic/pages /目录中,有一个名为tcgqueryoutput.php的文件,您的客户端浏览器试图请求?答案是,它只能根据它知道的应用程序的根目录进行操作。所以如果你提供子目录路径作为URL的一部分,它可以找出其余的。合理? –

0

在第一个示例中,您使用显式路径名称。最好的做法是在生产中使用根目录中的显式路径名或全限定路径。在我看来,你的第二种方法不起作用的原因是因为它是从错误的地方推断出路径名称。它将采用当前的语言环境,然后追加您拥有的网址。有一些可能性来改变这一点。通常会发生的事情是您将服务器传递到路径中。

var serverPath = /*get value from server*/; 

不过,您也可以只选择在这个值显式类型,

var serverPath = "http://mydomain.com/"; 

,这将允许你使用它作为一个基地:

$.get(serverPath + "magic/pages/tcgqueryoutput.php", 
function(data, statusTxt){ 
    $('#tcg_query_output').html(data); 
}); 

如果你已通过在服务器的serverPath中,那么你会在localhost和production中看到这个工作。如果您手动执行此操作,则需要将值从localhost更改为mydomain.com。