2

我有一个示例 url 网站: 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
   }
});

为什么当我尝试检查我的萤火虫时,它会使 URL 变得奇怪。

这是 firebug 的示例输出:

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那样输出吗?为什么它给我一个错误的 url 路径?

您的帮助将不胜感激和奖励!

谢谢!

4

2 回答 2

3

我不确定这样的错误可能来自哪里,但是指定主机是多余的:AJAX 请求无论如何都是同域的(除非特别配置),所以只需从根指定一部分:

url: "/forms/get_data.php",
于 2012-09-06T15:22:04.983 回答
3

原因是window.location.protocol已经包含一个冒号 (:)。

因此host变量包含http:://mysite.com

jQuery 发现您没有传递完整的有效 URL,因此它会自动添加您的主机名。

修复正在改变

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/

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

于 2012-09-06T15:36:57.630 回答