Вы должны использовать в качестве data
значение, отформатированное как правильные данные JSON:
{"myparm1":105,"myparm2":23}
вместо
{myparm1:105,myparm2:23}
Вы можете проверить на сайте http://www.jsonlint.com/ какие данные являются данными JSON.Поэтому вы должны изменить свой код на
$.ajax({
type: 'POST',
url: "http://localhost/WebServices/MyTest.asmx/JsonTest2",
data: '{"myparm1":105,"myparm2":23}',
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
async: false,
success: function (msg) {
alert(msg.d);
},
error: function (msg) {
alert('failure');
alert(msg);
}
});
. В случае более сложных входных параметров я рекомендую использовать JSON.stringify
функцию json2.js (см. этот ответ например):
var myValue1 = 105, myValue2 = 23;
$.ajax({
type: 'POST',
data: JSON.stringify({myparm1:myValue1, myparm2:myValue2}),
...
});
В последней версии $.ajax
использование myValue1
и myValue2
может быть сложными структурами (объектами со свойствами) или массивами, имеющими даже другие сложные структуры или массивыкак свойства.