Отправить JSON в webmethod?

** не на самом деле только указатель на указатель (как в объявлении), но также разыменовывание разыменовывания (в операторе).

Это часто используется в C, который не имеет & нотация для ссылок, например, обновить возвращаемое значение, которое является типом указателя:

int alloc_foo(struct foo **foo_ret)
{
    *foo_ret = malloc(sizeof(struct foo));
    return 1; /* to indicate success; return value in foo_ret */
}
7
задан cllpse 6 October 2009 в 19:10
поделиться

6 ответов

Пожалуйста, обратитесь к этой статье Дэйва Уорда. Это полное руководство по этому поводу. Также вы найдете там другие замечательные материалы для jquery / ASP.net.

РЕДАКТИРОВАТЬ: - Дэйв вызывает метод без каких-либо аргументов, вы можете заменить пустое свойство data фактическими данными, которые хотите отправить:

$.ajax({
  type: "POST",
  url: "Default.aspx/GetDate",
  data: "{'name':'tiger1','hobbies':['reading','music']}",//PUT DATA HERE
  contentType: "application/json; charset=utf-8",
  dataType: "json",
20
ответ дан 6 December 2019 в 04:59
поделиться

WebMethods ожидает строку, содержащую JSON, которая будет проанализирована на стороне сервера, я использую функцию JSON.stringify для преобразования объекта параметров в строку и отправку данных, у меня есть такая функция:

jQuery.executePageMethod = function(location, methodName, methodArguments,
                                    onSuccess, onFail) {
    this.ajax({
        type: "POST",
        url: location + "/" + methodName,
        data: JSON.stringify(methodArguments), // convert the arguments to string
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data, status) {
            var jsonData = JSON.parse(data.d);
            onSuccess(jsonData, status);
        },
        fail: onFail
    });
};

Я рекомендую вам включить парсер json2.js на свои страницы, чтобы функция JSON.stringify была доступна для разных браузеров.

11
ответ дан 6 December 2019 в 04:59
поделиться

Еще одна библиотека, которую вы можете использовать, - это jquery-json библиотека . После включения:

var json = $.toJSON(your_object);
6
ответ дан 6 December 2019 в 04:59
поделиться

Вам нужно будет опубликовать его с помощью Ajax и принять входящую строку с помощью веб-метода. Затем вам нужно будет использовать десериализатор JavaScript, чтобы преобразовать его в объект на стороне сервера.

0
ответ дан 6 December 2019 в 04:59
поделиться

Самые удобные решения, которые я видел, упрощают это за счет использования библиотеки JSON2.js с открытым исходным кодом для синтаксического анализа и преобразования данных сложных объектов в строки.

Подробно описаны две отличные статьи:

  • Использование сложных типов для упрощения вызовов служб Дэйв Уорд.

  • Массивы JavaScript через JQuery Ajax в Asp.Net WebMethod Крис Брандсма. ] Вторая статья может быть особенно актуальной для вас, хотя она вызывает метод веб-службы со следующей подписью ...

     public void SendValues ​​(List  list)
    

    ... он демонстрирует, как использовать библиотеку JSON2.js для рендеринга List в javascript (с использованием jQuery этот пример взят непосредственно из второй статьи):

     var список = ["а", "б", "в", "г"];
    вар jsonText = JSON.stringify ({список: список});
    
    // 'Список' размещен так
    
    $ .ajax ({
     тип: "POST",
     url: "WebService1.asmx / SendValues",
     данные: jsonText,
     contentType: "application / json; charset = utf-8",
     dataType: "json",
    успех: функция () {предупреждение ("это сработало"); },
    сбой: функция () {предупреждение ("Ой ой"); }
    });
    

    Просто используйте URL своего веб-метода вместо веб-службы.

5
ответ дан 6 December 2019 в 04:59
поделиться

JSON.Stringify помогает, но:

  1. это не кросс-браузер Посмотрите здесь: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/#

  2. Для браузера встроенные функции - каждый браузер будет иметь свои проблемы. Если вы используете вышеупомянутую сериализацию, вам нужно:

    • Удалить новые слова с регулярным выражением в строках
    • Берегите «в строках
0
ответ дан 6 December 2019 в 04:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: