在 OrchardCore 模块中从 JavaScript 获取站点 URL
Getting site URL from JavaScript in OrchardCore module
所以我有一个包含端点的自定义 Orchard Core 模块。
同样在模块中,我将有 JavaScript 响应点击事件并需要 POST 到我的模块端点。
我可以通过 POSTMAN 调用并确认端点有效,但我的 JavaScript 如何获取基础 URL/site URL 以添加端点路径?
你可以这样做:
var baseUrl = window.location.protocol + "//" + window.location.hostname;
这应该只给你协议和域名,没有添加任何路径或参数。
在 orchard 等 CMS 中工作时,我通常将 API 端点放在数据属性中。这意味着您可以使用 URL 助手来创建您的 URL。例如:
<div id="my-config" data-post-url="@Url.Action("MyAction", "MyController")"></div>
然后在您的 javascript 中访问它:
var configElement = document.getElementById("my-config");
var postUrl = configElement.dataset.postUrl;
在网页中我添加了 link:
<form id="myForm" name="postme" novalidate data-post-url="{{"~/MyModule/MyEndpoint" | href }}">
在 Javacript 中我使用:
$.ajax({
url: $form["0"].dataset.postUrl,
type: "POST",
data: {
...
}
所以我有一个包含端点的自定义 Orchard Core 模块。 同样在模块中,我将有 JavaScript 响应点击事件并需要 POST 到我的模块端点。
我可以通过 POSTMAN 调用并确认端点有效,但我的 JavaScript 如何获取基础 URL/site URL 以添加端点路径?
你可以这样做:
var baseUrl = window.location.protocol + "//" + window.location.hostname;
这应该只给你协议和域名,没有添加任何路径或参数。
在 orchard 等 CMS 中工作时,我通常将 API 端点放在数据属性中。这意味着您可以使用 URL 助手来创建您的 URL。例如:
<div id="my-config" data-post-url="@Url.Action("MyAction", "MyController")"></div>
然后在您的 javascript 中访问它:
var configElement = document.getElementById("my-config");
var postUrl = configElement.dataset.postUrl;
在网页中我添加了 link:
<form id="myForm" name="postme" novalidate data-post-url="{{"~/MyModule/MyEndpoint" | href }}">
在 Javacript 中我使用:
$.ajax({
url: $form["0"].dataset.postUrl,
type: "POST",
data: {
...
}