В дополнение к вкладу Исак Саво, вы можете посмотреть на блог Брайана Китинга для рабочего образца.
Я считаю, что код будет вызывать .value или .toString () для вашего объекта, а затем передавать его по сети. Вы хотите передать JSON.
Итак, включите json-библиотеку javascript
А затем пройдите ...
var saveData = {};
saveData.one = "test";
saveData.two = "tes2";
$.ajax({
type: "POST",
url: "MyService.aspx/GetDate",
data: JSON.stringify(saveData), // NOTE CHANGE HERE
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
},
error: function(msg) {
alert('error');
}
});
Согласно в этом сообщении в блоге , причина, по которой он не работает, когда вы пытаетесь передать объект, заключается в том, что jQuery пытается сериализовать его. Из сообщения:
Вместо того, чтобы передавать этот объект JSON в веб-службу, jQuery автоматически сериализует и отправляет его как:
fname = dave & lname = ward
На что сервер ответит:
Недействительный примитив JSON: fname.
Это явно не то, чего мы хотим. Решение состоит в том, чтобы убедиться, что вы передаете jQuery строку для параметра данных [...]
Это то, что вы делаете в работающем примере.
Я предлагаю использовать плагин jquery-json , а затем вы можете просто сделать это в своем коде:
...
data: $.toJSON(saveData),
...