我有一个示例网址:http://mysite.com/
var host = window.location.protocol+"//"+window.location.hostname;
$.ajax({
type:"POST",
data: params,
url : host+'/forms/get_data.php',
success:function(data){
...othercodeblahblah
}
});
为什么当我尝试检查我的firebug时,它会使URL变得怪异。
这是萤火虫的示例输出:
http://mysite.com/mysite.com/forms/get_data.php
有了这个网址,它现在给了我:
"NetworkError: 404 Not Found - http://mysite.com/mysite.com/forms/get_data.php"
它不应该像http://mysite.com/forms/get_data.php一样输出吗? 为什么它给我一个错误的网址?
您的帮助将受到高度赞赏和奖励!
感谢!
答案 0 :(得分:3)
我不确定这样的错误可能来自何处,但指定主机是多余的:无论如何,AJAX请求都是同域的(除非特别配置),所以只需从根目录指定一部分:
url: "/forms/get_data.php",
答案 1 :(得分:3)
原因是window.location.protocol
已包含冒号(:)。
host
变量包含http:://mysite.com
jQuery认为您没有传递完整的有效网址,因此它会自动添加您的主机名。
修复正在改变
var host = window.location.protocol+"://"+window.location.hostname;
到
var host = window.location.protocol+"//"+window.location.hostname;
我使用您的代码创建了一个jsfiddle:http://jsfiddle.net/xH5ZV/
和固定代码:http://jsfiddle.net/xH5ZV/1/
请注意,在固定代码中,您不会两次获得主机名。