powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как передать js массив с клиента на сервер с помощью Query?
20 сообщений из 20, страница 1 из 1
Как передать js массив с клиента на сервер с помощью Query?
    #36490230
V ad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Помогите решить такую задачу:

Собираю на клиенте массив обьектов:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var ResultArray = new Array();
...

for (i = 0; i < count; i++) 
{
     ...
     var RowValue = { id: current_Id, value: current_Value };
     ResultArray.push(RowValue);
}

Затем передаю его на сервер:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    $.post(
        "Home/GetResult",
        { result: ResultArray },
        null,
        "json"
    );


Перед передачей на сервер я вижу массив и все что внем лежит

На сервере я принимаю этот массив (2-мя способами), но обьекты в нем не видны
Ответ получается типа : "[object Object],[object Object],[object Object]"

Код: plaintext
1.
2.
3.
4.
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult GetResult(object[] result)
        {            
            object new_result = Request.Form["result"];

Подскажите, что нужно сделать, чтоб распознать обьекты в массиве?
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36490277
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант, наколбасить объект
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var ResultOb = {count:count};
...

for (i = 0; i < count; i++) 
{
   ...
   ResultOb['id'+i] = current_Id;
   ResultOb['v'+i] = current_Value;
}



$.post(
        "Home/GetResult",
        ResultOb,
        null,
        "json"
    );


На сервере смотреть Request.Form["count"] (число объектов)
и значения Request.Form["id0"], Request.Form["v0"], Request.Form["id1"], ...
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36490399
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант: PageMethods + JSON

К примеру, отправляется двумерный массив с клиента:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var args = new Array();

for (i = 0; i < ...; i++)
{                            
    args[j] = new Array (1);
    
    args[j][0] = ...
    args[j][1] = ...
}

...

PageMethods.GetStringValue(args, OnSucceeded, OnFailed); 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[WebMethod]
public static void GetStringValue(object value)
{
    if (value != null)
    {
        var values = new JavaScriptSerializer().ConvertToType<Dictionary<object, Dictionary<string, string>>>(value);
        if (values != null)
        {
            var query = values.Select(d => new PickerView(d.Value["0"], d.Value["1"])).ToList();
            ...
        }
    }
}

PickerView
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[Serializable]
public class PickerView
{
    public PickerView(string key, string value)
    {
        Key = key;
        Value = value;
    }

    public string Key { get; set; }
    public string Value { get; set; }
}
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36490525
V ad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Мечкак вариант, наколбасить объект
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var ResultOb = {count:count};
...

for (i = 0; i < count; i++) 
{
   ...
   ResultOb['id'+i] = current_Id;
   ResultOb['v'+i] = current_Value;
}



$.post(
        "Home/GetResult",
        ResultOb,
        null,
        "json"
    );


На сервере смотреть Request.Form["count"] (число объектов)
и значения Request.Form["id0"], Request.Form["v0"], Request.Form["id1"], ...

Яростный Меч, спасибо, ваш вариант сработал, но получается что мне возвращается только коллекция некоторых значений, но их может быть несколько тысяч.

Я знаю только вариант передачи такого массива в виде строки с помощью JSON.stringify:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    $.post(
        "Home/GetResult",
        { result: JSON.stringify(ResultArray) },
        null,
        "json"
    );


А не знаете как можно было бы передать обьект - как массив обьектов, а потом распознать каждый обьект на сервере?
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36490728
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
Public Class Customer
    Public Name As String
    Public SoureName As String
    Public Age As Int16
End Class
Код: plaintext
1.
2.
3.
4.
5.
6.
function addPeople() {    
            var val = [];
            var o = {Name: "User", SoureName: "SourName", Age: 150}
            val.push(o);                    
            $.post("/Home/addPeople", { data: $.toJSON(val) }, null, "json");
        }
Код: plaintext
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.
30.
31.
32.
33.
Imports Newtonsoft.Json

Public Class JsonFilter
    Inherits ActionFilterAttribute

    Private _JsonDataType As Type
    Public Property JsonDataType() As Type
        Get
            Return _JsonDataType
        End Get
        Set(ByVal value As Type)
            _JsonDataType = value
        End Set
    End Property

    Private _Param As String
    Public Property Param() As String
        Get
            Return _Param
        End Get
        Set(ByVal value As String)
            _Param = value
        End Set
    End Property

    Public Overrides Sub OnActionExecuting(ByVal filterContext As System.Web.Mvc.ActionExecutingContext)

        Dim inputContent As String = HttpUtility.UrlDecode(filterContext.HttpContext.Request.Params(_Param))
        filterContext.ActionParameters(_Param) = Newtonsoft.Json.JsonConvert.DeserializeObject(inputContent, GetType(Customer()))

    End Sub

End Class
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 <JsonFilter(Param:="data", JsonDataType:=GetType(Customer()))> _
    <AcceptVerbs(HttpVerbs.Post)> _
    Public Function addPeople(ByVal data() As Customer) As JsonResult

        Return Nothing

    End Function
Newtonsoft.Json
jquery.toJSON.js

Успехов!
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491209
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Public Overrides Sub OnActionExecuting(ByVal filterContext As System.Web.Mvc.ActionExecutingContext)

        Dim inputContent As String = HttpUtility.UrlDecode(filterContext.HttpContext.Request.Params(_Param))
        filterContext.ActionParameters(_Param) = Newtonsoft.Json.JsonConvert.DeserializeObject(inputContent, _JsonDataType)

End Sub
конечно! ;)
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491221
Фотография n_string
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бох ты мой! Чтобы парсить json нужна эта дурацкая библиотека? Ну, дожили..
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491229
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n_stringБох ты мой! Чтобы парсить json нужна эта дурацкая библиотека? Ну, дожили..
Пардон, в тему не въехал. Только вот вопрос - зачем JSON парсить? Самое простое - десериализовать его и получить объект в программе (на сишарпе - запросто, про бейсик не знаю).
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491233
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, не досмотрел, похоже, так и делается.
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491302
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторБох ты мой! Чтобы парсить json нужна эта дурацкая библиотека? Ну, дожили..
to be continued... !?
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491346
V ad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, я решил это так:

1) На клиенте:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var ResultArray = new Array();
...

for (i = 0; i < count; i++) 
{
     ...
     var RowValue = { id: current_Id, value: current_Value };
     ResultArray.push(RowValue);
}


2)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    $.post(
        "Home/GetResult",
        { result: JSON.stringify(ResultArray) },
        null,
        "json"
    );



JSON.stringify(ResultArray) - преобразуем массив в сериализованную строку

http://www.json.org/js.html



3) На сервере:

Код: plaintext
1.
2.
3.
4.
5.
6.
public class ResultItem
{
     public string id { get; set; }
     public string value { get; set; }
}


4)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using System.Web.Script.Serialization

...

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetResult(string result)
{   
    List<ResultItem> Results = new List<ResultItem>();
    JavaScriptSerializer js = new JavaScriptSerializer(); 
    Results= serializer.Deserialize<List<ResultItem>>(result);  // Десериализуем строку обратно в массив
}    


При такой схеме у меня все заработало.
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491372
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПри такой схеме у меня все заработало.
заработало и хорошо! ;)

1. http://msdn.microsoft.com/en-us/library/cc836459(VS.85).aspx] JScript 5.8 includes native JavaScript Object Notation (JSON) support and the accessor methods for Document Object Model (DOM) prototypes.

IE 6 мимо - проверил в IETester - насчёт др. браузеров не проверял, извини!

2. Results= serializer.Deserialize<List <ResultItem> >(result); // Десериализуем строку обратно в массив

Loose coupling - поищи в гугле, довольно занятно!

P.S. Ладно, заболтался... Бывай!
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491454
Фотография n_string
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторJSON.stringify(ResultArray) - преобразуем массив в сериализованную строкуНе проверял, но возможно это лишнее. Соответственно здесь поменять
Код: plaintext
public ActionResult GetResult(ResultItem result)
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491483
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n_stringБох ты мой! Чтобы парсить json нужна эта дурацкая библиотека? Ну, дожили..
+1

Задача решается банально родными средствами.
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491692
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе проверял, но возможно это лишнее. Соответственно здесь поменять
проверь!
авторЗадача решается банально родными средствами.
уже 11:00 - всё решаешь!? ;)))
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36491897
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrigуже 11:00 - всё решаешь!? ;)))
Решил еще в третьем посте.
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36492067
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРешил еще в третьем посте.
ну, решил и молодец!
Модератор: отредактировано
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #36492941
Фотография Lamer@fools.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V ad ,

ASP.NET AJAX:
Sys.Serialization.JavaScriptSerializer.serialize()
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как передать js массив с клиента на сервер с помощью Query?
    #38546726
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
DataContractJsonSerializer более скоростной
...
Рейтинг: 0 / 0
Как передать js массив с клиента на сервер с помощью Query?
    #38546816
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ы,

фу-фу-фу...
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как передать js массив с клиента на сервер с помощью Query?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]