Хорошо, давайте упростим, потому что эти объединения строк просто безобразны.Это очень легко сделать, если вы реплицируете ту же структуру на сервере.
Итак, давайте предположим, что вы хотите отправить на сервер следующий объект javascript:
var myObject = { a: { one: 1, two: 2 }, b: [1, 2, 3] };
Вы должны определитьклассы, которые соответствуют этой подписи:
public class MyModel
{
public Foo A { get; set; }
public int[] B { get; set; }
}
public class Foo
{
public int One { get; set; }
public int Two { get; set; }
}
и имеют веб-метод:
[WebMethod]
public string SomeMethod(MyModel model)
{
...
}
, который вы будете вызывать так:
var myObject = { a: { one: 1, two: 2 }, b: [1, 2, 3] };
$.ajax({
url: '/SomeService.asmx/SomeMethod',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(myObject),
success: function(result) {
// Notice the .d property here. That's specific to ASP.NET web methods,
// which wrap the response using this property, like this:
// { d: ... }
alert(result.d);
}
});
Обратите внимание на JSON.stringify
метод.Он преобразует объект javascript в строковое представление JSON.Этот метод изначально встроен в современные веб-браузеры, но если вам нужно поддерживать устаревшие браузеры, вы можете включить на свою страницу json2.js , которая проверит, поддерживает ли браузер метод и использует его или нет.• предоставить альтернативную реализацию.
Другой пример, если, если вы хотите отправить массив объектов, например:
var myObject = [
{ a: { one: 1, two: 2 }, b: [1, 2, 3] },
{ a: { one: 5, two: 9 }, b: [7, 3, 4] },
{ a: { one: 3, two: 0 }, b: [3, 9, 3] },
]
, тогда ваш веб-метод будет просто выглядеть так:
[WebMethod]
public string SomeMethod(MyModel[] model)
{
...
}
Вооружившись этими знаниями, вы можете очень легко обмениваться структурами данных между javascript и вашими веб-методами.