gpt4 book ai didi

jquery - 如何在外部JS函数中提及操作方法的路径?

转载 作者:行者123 更新时间:2023-12-01 04:18:26 25 4
gpt4 key购买 nike

我在外部 JS 文件中编写了一个 jquery 函数,并在我需要的地方包含该文件。

在 jquery 函数中,我从 Controller 调用了操作方法。现在我的问题是我无法从外部 JS 找到该操作方法路径。它会引发错误,即找不到这样的方法。

现在我如何在外部JS中编写可以在任何地方工作的操作路径名称。

我尝试了以下提及/调用操作方法 -

1. url: "/Employee/AutocompleteSuggestions" 


2. url: "AutocompleteSuggestions"

3. @Html.Raw(Url.Action("AutocompleteSuggestions", "Employee", new { @term = "Term", @moduleName="ModuleName"}))

由于 razor 语法,第 3 步无法工作。

如何解决这个问题?

我使用了如下的 JS -

       $.ajax({
url: "AutocompleteSuggestions",
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
data:
JSON.stringify({
term: request.term,
moduleName: "Employee"
}),
success: function (data) {
response($.map(data, function (item) {
return { label: item.FullName, value: item.Id }
}
))
},
error: function (xhr, ajaxOptions, thrownError) { alert(thrownError); }
})

最佳答案

您遇到的一个问题是您可能需要使用全局变量;这可能容易受到脚本攻击。请参阅我最初的答案,了解最简单的实现。

我认为这可能相当安全 - 但还有更好的 Javascript 专家可能有更好的答案。

在你的布局/母版中,你可以输出这样的脚本 block (我使用的是 Razor):

<script>
function myActionMethods(){
this.MyActionMethod = function(){
return '@Url.Action("Action", "Controller")';
};
}
</script>

然后在之后添加您的脚本,使用如下内容:

var methods = new myActionMethods();
$.get(methods.MyActionMethod());

当您需要在脚本中使用该 URI 时(此处仅使用 jQuery Get 进行演示)。

回应您对 @David 的回答的评论

当然;您可以使用 Razor 输出 JS:只需编写一个 Controller 操作来触发一个返回 javascript 的 Razor View (尽管您必须对响应类型进行一些修改),但如果您这样做,您将丢失所有缓存/压缩对该脚本的好处,然后您必须再次将其全部写回。

关于jquery - 如何在外部JS函数中提及操作方法的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12780136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com