Просто перепроверьте свой JavaScript. Это скорее виновник, чем проблема с вашим C #, так как значение зарезервированного слова params
не существует. Аргумент в конечном итоге все еще является массивом строк, который не является чем-то особенным для JSON . Я только что создал быструю тестовую страницу, которая не вызвала никаких проблем при использовании вашего метода. Попробуйте дважды проверить ваш синтаксис по следующему:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "MyPage.aspx/MakeWebServiceCall",
data: '{"methodName":"myMethod", "args":["my","array","of","strings"]}',
dataType: "json"
});
ИЛИ , если хотите, структурируйте объект данных с помощью библиотеки JavasScript JSON (встроенной в более новые браузеры). Этот метод мой любимый, так как мне не нужно перепроверять, правильно ли я построил мою строку JSON. Просто убедитесь, что включили поддержку IE7, если вы чувствуете себя хорошо:
var data = {};
data.methodName = "myMethod";
data.args = ["my","array","of","strings"];
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "MyPage.aspx/MakeWebServiceCall",
data: JSON.stringify(data),
dataType: "json"
});
Если у вас возникли трудности с некоторыми особенностями построения этих аргументов, вы можете прочитать эту замечательную статью ресурса из Encosia , к которой я часто возвращаюсь, чтобы просто напомнить себе об основах использования веб-сервисов и методов страницы с помощью jQuery. Он объясняет несколько странностей, в том числе ссылки на страницы, на которых рассказывается о важности кодировки contentType, а также информацию о том, почему полная строка JSON должна предоставляться аргументу data
, а не просто объекту JavaScript.