我在Windows 10开发机器上使用xampp,当我使用chrome启动我的javascript应用程序时,浏览器使用localhost:8080
作为根目录。
对于我的php ajax调用,我必须使用完全限定的路径来使它们工作。例如:
$.ajax({
type: "GET",
dataType: "json",
url: "http://localhost/get_user.php",
data: {email: $("#email").val()}
});
请注意,我必须使用localhost
进行ajax调用,而javascript root是localhost:8080
。我的php文件存储在本地c:/xampp/htdocs
。
我想使用一个可以在我的本地开发机器和生产网站上运行的简短形式的URL。像
这样的东西$.ajax({
type: "GET",
dataType: "json",
url: "/get_user.php",
data: {email: $("#email").val()}
});
我的理解(以及我对此的新见解)是,如果我使用短格式网址/get_user.php
,系统将使用与客户端应用相同的根(即http://localhost:8080/get_user.php
)。但只有完全限定的http://localhost/get_user.php
才能用于我的ajax调用。
使用短格式/get_user.php
时,我收到以下错误消息:
GET http://localhost:8080/check_login.php?password=xxxxxxxxxx&email=drew%40aol.com 404(未找到)
因此客户端使用localhost:8080
,服务器端期望localhost
。我确定这可能是一个xampp配置问题,但我自己无法解决。任何见解都将不胜感激。
答案 0 :(得分:0)
尝试将数据类型更改为jsonp而不是json。我认为你遇到了跨域资源共享问题。基本上是权限问题。就您的浏览器而言,localhost和localhost:8080是两个不同的域。如果您的代码是从localhost:8080执行的,并且您给它一个相对URL,例如/something.php,它会假定您从同一个域请求它。 localhost相当于localhost:80。