javascript window.location在检查firebug时给了我一个错误的url路径

时间:2012-09-06 15:20:27

标签: javascript

我有一个示例网址: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一样输出吗? 为什么它给我一个错误的网址?

您的帮助将受到高度赞赏和奖励!

感谢!

2 个答案:

答案 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/

请注意,在固定代码中,您不会两次获得主机名。