【问题标题】:How to setup a base URL and where do I declare it?如何设置基本 URL 以及在哪里声明它?
【发布时间】:2014-06-24 16:51:24
【问题描述】:

我对应该在哪里设置基本 URL 感到困惑。目前我正在调用 URL 及其扩展名:

例如:

$(document).on("pageinit", "#login", function () {
    $("#form2").on("submit", function (event) {
        $.ajax({
            type: "GET",
            url: "http://www.websiteurl.com/public/account/login/", //the full url
            data: $("#form2").serialize(),
            success: function (data) {
                if (data.loggedIn) {
                    alert("logged");
                } else {
                    alert("not logged");
                }
            }
        });
    });
});

据我了解,基本 URL 是一个字符串,我只是将信息连接到该字符串,例如:

var baseUrl = "http://www.websiteurl.com/";

$(document).on("pageinit", "#login", function () {
        $("#form2").on("submit", function (event) {
            $.ajax({
                type: "GET",
                url: baseUrl + "public/account/login/", //using baseUrl
                data: $("#form2").serialize(),
                success: function (data) {
                    if (data.loggedIn) {
                        alert("logged");
                    } else {
                        alert("not logged");
                    }
                }
            });
        });
    });

但我相信我做错了,一些网站谈论使用 PHP 来声明 baseurl。我可以就如何做到这一点以及我应该在哪里声明基本 URL 字符串获得一些建议。

在 HTML 页面上是 <base> 还是在 js 文件上是 String?谢谢。

【问题讨论】:

  • 您可以使用 或您的第二个示例 var baseUrl 来设置它。无需在 php 中声明任何内容。或者只使用完整的 url,baseUrl 不是强制性的

标签: javascript php jquery ajax


【解决方案1】:

您无需指定完整的基本网址。

改变:

url: baseUrl + "public/account/login/",

到:

url: "/public/account/login/",

它应该会继续工作。


考虑以下内容:http://localhost/test.php

test.php

<?php

// GET Handler
if (isset($_GET['loadData']))
{
    exit('Got your request');
}

?>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">

$(document).ready(function()
{
    $.ajax({
        url: "/test.php?loadData",
        success: function(result) {
            alert(result);
        }
    });
});

</script>

【讨论】:

  • 它不起作用。我应该把baseurl放在哪里。如您所见,我目前将其声明为普通字符串。
  • 如果baseURL 类似于http://www.websiteurl.com/test/,这可能不起作用。
  • 老实说,我认为声明完整 url 和 baseurl + 扩展名之间没有任何真正的区别。
  • 我已经用示例场景更新了我的答案。它可以在不指定基本 url 和使用 /(站点根路径)的情况下工作
  • 除非我需要来自其他域的内容,否则我从未在 AJAX 请求中使用完全限定的 URL。只要您想要来自运行脚本的同一域的内容,您就可以使用相对 URL,因为这个答案正在演示。
【解决方案2】:

我不确定,但据我了解,它就像

<script type="text/javascript">
var baseUrl = '<?php echo "http://".$_SERVER["HTTP_HOST"]."/"?>';
</script>

这里的$_SERVER["HTTP_HOST"] 部分是主机名,例如www.example.com 然后在你的ajax请求中你可以使用baseUrl js var并且可以连接你的url

url: baseUrl + 'account/login'

【讨论】:

  • 可能是个愚蠢的问题,但我应该将代码的哪一部分替换为我的基本 URL,例如,如果我的基本 URL 是“www.aaa.com/user”。
  • @Trevor_zam 我更新了一点答案,如果你的基本 url 包含比主机名更多的东西,那么你应该添加它,所以它将是 &lt;?php echo "http://".$_SERVER["HTTP_HOST"]."/user/"?&gt;
【解决方案3】:

我正在开发一个大型应用程序,并且很快了解到将路径保持在一个位置并在其他任何地方使用变量和/或常量有很大的好处。原因很简单:灵活性、DRY 等。

如果您有一个也使用 Javascript 的 PHP 应用程序,就像我一样,您可能需要考虑这样做:

文件:constants.php

<?php
define("WEB_ADDRESS","http://www.somewebsite.com");
//...
?>

现在,把它放到每个 JS 页面中,虽然我不知道您的具体架构以及您是否使用引导程序,但我假设您有一个或多个文件,您可以从中引导和加载页眉/页脚,或者您使用模板程序。如果没有,您可能需要调查一下。无论如何,这个概念是您只需在页面文本的开头为您加载的每个页面声明它,然后再包含任何其他 JS。

文件:header.php(在您正在加载的网页中调用)。

//No Javascript above.
echo '<script type="text/javascript">var WEB_ADDRESS = ' . WEB_ADDRESS . '</script>';
//Now you can put in your Javascript.

最终目的是您包含的每个 Javascript 文件或您在此之后调用的任何 Javascript 都可以访问变量 WEB_ADDRESS。如果您出于任何原因需要更改该路径,您可以轻松地在不破坏任何链接的情况下使用 PHP 和 Javascript。

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 2017-10-05
    • 2022-10-25
    • 2012-03-07
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2011-10-18
    相关资源
    最近更新 更多