JQuery:如何替换托管页面的硬编码网址?

时间:2011-01-04 14:03:25

标签: jquery ajax

我有这个:

$("input.fetchData").click(function () {
 path = "/data";
 var dataurl = 'http://localhost:8000' + path;

...

它在本地工作,但是当我部署到我的服务器时它停止工作。我想将localhost替换为提供该页面的主机。怎么样?

4 个答案:

答案 0 :(得分:3)

您可以使用window.location获取信息,但是您真的需要完整路径吗?对于ajax请求等,相对路径应该足够了。例如:

$("input.fetchData").click(function () {
    $.ajax({
        url: "/data",
        ...
    });
});
Fetches                       If page served from
-------                       ----------------------
http://localhost:8000/data    http://localhost:8000
http://w3.example.com/data    http://w3.example.com

...等。如果要从当前位置的对等方提取,您可能会发现需要../data而不是/data,它始终从服务器的根目录开始。

无论如何,如果你需要一个完整的路径,这里有一个location属性的简介:

  • protocol - 例如,httphttps
  • hostname - 主机名
  • port - 端口(默认为80,但当然问题可能是8000)
  • host - hostnameport为您预先合并

...然后您可能会或可能不想pathname

答案 1 :(得分:0)

您可以使用“window.location”来了解您的主机

答案 2 :(得分:0)

您应该查看window.location对象,它具有可用于构建网址的window.location.host等属性,例如:

$("input.fetchData").click(function () {
  path = "/data";
  var dataurl = 'http://' + window.location.host + path;
  // ...
});

答案 3 :(得分:0)

您可以使用相对URL而不是绝对URL,或者您可以浏览DOM中的window.location成员。

在大多数情况下,相对网址应该有效,但如果不相应,您可以随时使用以下内容重新创建网址:

var curUrl = document.location.protocol +“//”+ document.location.host + document.location.pathname;