0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65

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

12.09.2013, 12:46. Показов 6558. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском https:/ / vkvideo. ru/ video-231374465_456239020 На английском https:/ / www. youtube. com/ watch?v=oskqtCrWns0 Исходники примера:
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru