вызов метода PageMethod с помощью params object [] args из jQuery - PullRequest
2 голосов
/ 07 июня 2011

Есть ли способ вызвать метод страницы в jQuery, когда метод страницы имеет тип аргумента "params" (в C #)?Я могу вызывать методы Page весь день, используя jQuery, если я указываю аргументы по одному, но если я помещаю их как «params object [] args», это выдает ошибку о том, что не найден параметр «args».

Я пытаюсь вызвать метод со следующей сигнатурой:

public static string MakeWebServiceCall(string methodName, params string[] args)

Но это работает, только если я укажу его явно так:

public static string MakeWebServiceCall(string methodName, string place, string type, string token)

1 Ответ

3 голосов
/ 07 июня 2011

Просто перепроверьте свой 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.

...