Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885

Как выполнить JS вернувшийся в AJAX GET запросе?

12.05.2017, 09:24. Показов 1480. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возвращается код вида:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@model  IEnumerable<HomeIndexViewModel>
<script id="markers-script-id">
    window.onload = function () {
        var add;
        @{int i = 0; }
        @foreach (HomeIndexViewModel m in Model)
        {
            <text>
                add = addMarker('@m?.MarkerMessageId', '@m?.Latitude', '@m?.Longitude', '@m?.Title');
                $("#map").data('markers' + '@i', add);
            </text>
            i++;
        }
    }
</script>
Точнне:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script>
    window.onload = function () {
        var add;
        
                add = addMarker('1c0f1476-a826-4b60-ae42-8a14ad35b9eb', '56.09425763739584', ' 92.96253204345703', 'ghj');
                $("#map").data('markers' + '0', add);
            
                add = addMarker('313cab90-f213-44cd-9f65-6d54368b6734', '56.08151977411704', ' 92.98192977905273', '');
                $("#map").data('markers' + '1', add);
            
                add = addMarker('61e48d9a-c9fc-4d87-9df4-5461f5d6c01c', '56.09310852937803', ' 92.97523498535156', '');
                $("#map").data('markers' + '2', add);
            
                add = addMarker('71268368-94e4-463c-ac55-1228d8e5dc70', '56.086404715868206', ' 92.95412063598633', 'fghf');
                $("#map").data('markers' + '3', add);
            
                add = addMarker('7cbc176f-a10b-4cdf-ba4c-792d27047984', '56.079124968584054', ' 92.9527473449707', '');
                $("#map").data('markers' + '4', add);
                }
</script>
Вызываю так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
                $.ajax({
                    type: "GET",
                    url: '/Home/AddMarkers',
                    contentType: false,
                    processData: false,
                    data: 'num=5',
                    success: function (data) {
                        $('#markers-script-id').remove();
                        $('#test').html(data);
                    },
                    error: function (err) {
                    }
                });
Но вариант с $('#test').html(data); не чего не даст, он просто вставит код в контейнер.
Метод:
C#
1
2
3
4
        public IActionResult AddMarkers(int num = 10)
        {
            return ViewComponent("AddMarkers", num);
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2017, 09:24
Ответы с готовыми решениями:

Как выполнить JS вернувшийся в GET запросе?
Возвращается что-то вроде: &lt;script&gt; window.onload = function () { var add; add =...

Как скрыть имя файла в ajax-запросе?
Как бы скрыть имя файла в ajax-запросе? $.ajax({ url:&quot;/file.php&quot;, ... $(&quot;#id&quot;).load(&quot;/file.php&quot;); и т.д. Не хотелось бы...

Как при AJAX запросе открыть модальное окно
Запрос @Ajax.ActionLink(&quot;Детали&quot;, &quot;Details&quot;, &quot;Admin&quot;, new { id = item.ID }, new AjaxOptions() ...

4
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
12.05.2017, 10:54
EveKS, вставлять код вида:

JavaScript
1
window.onload = function () {
... бесполезно, так как страница уже загружена и данный обработчик никогда не отработает. Полученный JavaScript (без всяких тегов - чистый JS-код) можно выполнить вызвав функцию eval():

JavaScript
1
2
3
...
eval('alert("hello from dynamically loaded code!")');
...
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
12.05.2017, 11:41  [ТС]
Usaga, спасибо, изначально этот код грузится как <vc:add-markers num="10"></vc:add-markers>, поэтому и window.onload было. Сейчас я просто создал отдельный пост метод, возвращающий JSON, а затем уже этот JSON вставляю в нужную функцию JS, а не отправляю готовый JS.

Добавлено через 52 секунды
названия вида num и сам метод, чтоб разобраться, т.к. конечный метод будет делать выборки по группам и датам.

Добавлено через 2 минуты
Сейчас метод выглядит так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        [HttpPost]
        public async Task<IActionResult> AddMarkers(string num)
        {
            if (_context != null && int.TryParse(num, out int n))
            {
                IQueryable<MessageInfo> message = _context.MessageInfos.Where(mes => !mes.IsLine)
                    .Take(n)
                    .Include(c => c.Coordinates);
                List<HomeIndexViewModel> homeIndexViewModel = new List<HomeIndexViewModel>(50);
 
                await (message?
                    .AsNoTracking())
                    .ForEachAsync(mes =>
                    {
                        if (mes != null)
                            homeIndexViewModel.Add(new HomeIndexViewModel
                            {
                                MarkerMessageId = mes.MessageInfoId,
                                Latitude = mes.Coordinates.First().Latitude,
                                Longitude = mes.Coordinates.First().Longitude,
                                Title = mes.Title
                            });
                    });
 
                return Json(homeIndexViewModel);
            }
 
            return View();
        }
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
12.05.2017, 11:42
EveKS, я не очень понял. Вопрос больше не актуален?..
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
12.05.2017, 12:30  [ТС]
Usaga, да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2017, 12:30
Помогаю со студенческими работами здесь

Как правильно получить данные с $.ajax и затем использовать в запросе к бд
Добрый день. Помогите, пожалуйста, разобратся почему не выходит получить данные по ajax и затем использовать в запросе. Есть,...

Как выполнить AJAX-запрос в React?
Я хочу получить данный с сервера и сохранить их в state. class NavBar extends React.Component { constructor(props) { ...

Как выполнить скрипты, подгружаемые через ajax?
{ $.ajax({ url: 'страница.php', success: function(data) ...

Spring: JSP + AJAX запрос, как правильно выполнить
Доброго времени суток. Подскажите пожалуйста, такой вопрос. Есть .jsp файл, на который мне надо подцепить результаты метода random...

Как обойти, Ajax не работает и выполнить php скрипт
Здравствуйте, есть ссылка по нажатию отрабатывает Ajax и выводит Hello World! Как при отключенном JavaScript, по нажатию на ту же ссылку,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru