Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65

MVC3 JQuery Ajax передача JSON данных от клиента серверу

12.09.2013, 12:46. Показов 6629. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Код на клиенте
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
                $.ajax({url:'@Url.Action( "Index" )', 
                type:'POST',
                data:JSON.stringify("abcdef"),
                dataType:'json',
                processData:false,
                ContentType:'application/json; charset=utf-8',
                success: function (data) {
                    var items = [];
                    $.each(data, function (key, val) {
                            alert(val);
                    });
                }});
Код контроллера на сервере:
C#
1
2
3
4
5
6
7
8
9
10
11
        [HttpPost]
        public ActionResult Index(string str)
        {
            if (Request.IsAjaxRequest())
            {
                //Вот здесь str  = null
                ...
            }
            else
                return View();
        }
При выполнении клиентского кода вызывается контроллер Index на сервере, но параметр str равен null, хотя ожидаема строка abc.

Как решить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.09.2013, 12:46
Ответы с готовыми решениями:

Передача данных от клиента к серверу
Всем привет! Возникла потребность передавать данные по симметрично-шифрованному соединению. Клиент передает данные(в данном случае...

Неправильная передача данных от клиента серверу
Пишу программу на клиент-серверной архитектуре. Нужно из клиента передать данные на сервер, а сервер должен их принять. Отправляю...

ICallbackEventHandler, передача данных от клиента серверу
Здравтвуйте, в ASP.NET(Ajax) Используется интерфейс ICallbackEventHandler для передачи с сервера на клиент данных А что испольуется в...

5
 Аватар для andrew_w2k
341 / 341 / 90
Регистрация: 04.03.2010
Сообщений: 648
12.09.2013, 13:17
Зачем Вам здесь Json?
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({url:'@Url.Action( "Index" )', 
                type:'POST',
                data:{str: "abcdef"},
                dataType:'html',
                processData:false,
                ContentType:'application/json; charset=utf-8',
                success: function (data) {
                    var items = [];
                    $.each(data, function (key, val) {
                            alert(val);
                    });
                }});
0
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65
12.09.2013, 13:35  [ТС]
Это пример со строкой я хотел показать что даже строку не могу передать. Фактически мне потребуется передавать массив, а в дальнейшем сложный объект

и dataType это формат ответа от сервера с ним у меня проблем нет. Сервер передает данные в JSON а клиент их принимает. Проблемма в отправке данных от клиента серверу а за это отвечает contentType.
0
 Аватар для andrew_w2k
341 / 341 / 90
Регистрация: 04.03.2010
Сообщений: 648
12.09.2013, 13:45
так сразу и показывайте с каким объектом работаете, как он формируется и т.п.

Добавлено через 2 минуты
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({url:'@Url.Action( "Index" )', 
                type:'POST',
                data:{str: JSON.stringify("abcdef")},
                dataType:'json',
                processData:false,
                ContentType:'application/json; charset=utf-8',
                success: function (data) {
                    var items = [];
                    $.each(data, function (key, val) {
                            alert(val);
                    });
                }});
1
6 / 6 / 0
Регистрация: 29.07.2013
Сообщений: 55
12.09.2013, 16:52
Цитата Сообщение от Pruvet Посмотреть сообщение
Это пример со строкой я хотел показать что даже строку не могу передать. Фактически мне потребуется передавать массив, а в дальнейшем сложный объект

и dataType это формат ответа от сервера с ним у меня проблем нет. Сервер передает данные в JSON а клиент их принимает. Проблемма в отправке данных от клиента серверу а за это отвечает contentType.
для акшена скорее всего(другого я просто не знаю) придется десериализовать(сложный-объект) из json самому(в самописном аттрибуте или байндере). для метода вебсервиса такое есть(мвс как бы и не нада).
0
 Аватар для VladA4
50 / 50 / 7
Регистрация: 06.05.2013
Сообщений: 79
Записей в блоге: 1
27.09.2013, 14:24
Для того что бы вернуть Json из Action , Вам надо использовать return Json(model,JsonRequestBehavior.AllowGet)
и тогда asp.net mvc сам сделает сериллизацию, а на уровне Jquery в success callback получить result и оперировать с ним.

примечание:если возврат будет коллекция то можно использовать jquery each
JavaScript
1
$(result).each(function(){ alert(this.PropertyName);});


От себя могу добавить, что на уровне JavaScript кода потеряет строгую типизацию и не будет проверять на валидность схемы, то есть пример:
this.Name или this.Naem все равно будет считаться верным из-за динамической составляющей JavaScript кода.


Могу посоветовать решение, которое подкупает своей новизной, а именно возможность разрабатывать "богатые" клиентские сценарии без написания JavaScript кода.

Для наглядности рассмотрим на примере Вашей задачи

Код View
C#
1
2
3
4
5
6
        @(Html.When(JqueryBind.InitIncoding)
              .Do()
              .AjaxGet(Url.Action("Fetch"))
              .OnSuccess(dsl => dsl.Self().Core().Insert.WithTemplate(Selector.Jquery.Id(tmplId)).Html())
              .AsHtmlAttributes(new { @class = "container" })
              .ToDiv())
Код Controller
C#
1
2
3
4
5
6
        [HttpGet]
        public ActionResult Fetch()
        {
            return IncodingResult.Success(data.Select(r => r.Value)
                                              .ToList());
        }

Описание этого и других примеров можно найти в блоге, а так же ознакомится с решением на сайте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2013, 14:24
Помогаю со студенческими работами здесь

Передача данных от клиента серверу через http proxy
Всем, доброго дня. Возникла следующая проблема: как реализовать взаимодействие клиента с сервером через http proxy. Какой нужно включать...

Передача json данных методом POST через AJAX
нужно передать данные на сервер методом post передача на сервер req.open("POST", "/controller/ajax.php") ...

AJAX или запросы от клиента к серверу и обратно
Посылаю запрос Ajax серверу, там его принимаю и с данными работаю, далее, нужно отправить новые данные с сервера на клиентскую страницу....

Передача архива от клиента к серверу
Клиент скачивает файлы .txt затем их изменяет, но это всё понятно, а ещё нужно что бы клиент отправил файлы серверу( было бы не плохо...

Передача массива от клиента к серверу
Здравствуйте. Суть такова. Когда в одной проекте на Form1 у меня клиент, а на Form2 у меня сервер и я передаю массив от клиента к серверу,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
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