Имя функции не существует в текущем контексте - это ошибка, которую она мне выдает. Мне нужен динамический вызов ajax. Почему это происходит? Я получаю, что обработчики обрабатываются на стороне сервера, но я не знаю, как обойти эту проблему.
var getManager = function (functionName, contentDiv) {
console.log("aircraft manager refresh called");
$.ajax({
type: "GET",
url: '@Url.Action(functionName, "AdminTools")',
cache: false,
data: {},
error: function () {
alert("An error occurred.");
},
success: function (data) {
$("#".concat(contentDiv)).html(data);
}
});
}
1 ответ
Я настоятельно рекомендую вам не объединять серверный и клиентский код, например:
$.ajax({
type: "GET",
url: '@Url.Action(functionName, "AdminTools")', //THIS
Это превратится в кошмар обслуживания. Вместо:
<div id="#contentDiv" data-url="@Url.Action(functionName, "AdminTools")">
@* content *@
</div>
Тогда
var getManager = function (functionName, contentDiv) {
console.log("aircraft manager refresh called");
var url = contentDiv.data("url");
$.ajax({
type: "GET",
url: url,
// .....
Если позже вы решите иметь несколько contentdivs , у каждого из них может быть собственный URL-адрес, и ваш код можно будет использовать повторно.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
@Url.Action
вызываются на стороне сервера . К моменту запуска вашего скрипта он уже был заменен фактическим URL-адресомurl: "AdminTools/" + functionName
@Url.Action()
- это код бритвы, который оценивается на сервере перед отправкой клиенту.functionName
- это переменная javascript на стороне клиента, которая в данный момент не существует (не входит в область видимости)