2010-07-08 3 views
2

У меня есть два параметра (categoryName и categoryDescription), которые мне нужно передать веб-службе с помощью JSON. Я нашел синтаксис для передачи categoryName, но не смог получить правильный синтаксис для передачи обоих параметров. Вот код.Передача данных JSON на webservice

<script src="js/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     $('#hbtnCreateCategory').click(function(event) { 
      $.ajax({ 
       type: "POST", 
       url: "lwsServiceData.asmx/CreateHelpDeskCategory", 
       data: "{'categoryName': '" + $('#categoryName').val() + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        AjaxSucceeded(msg); 
       }, 
       error: AjaxFailed 
      }); 

     }); 

     function AjaxSucceeded(result) { 
      alert(result.d); 
      $('#result').val = result.d; 
     } 

     function AjaxFailed(result) { 
      alert(result.status + ' ' + result.statusText); 
     } 

    }); 
</script> 

Заранее спасибо.

ответ

0
data: "{'categoryName': '" + $('#categoryName').val() + "', 'categoryDescription': 'some description'}" 

и если он должен быть динамичным:

data: "{'categoryName': '" + $('#categoryName').val() + "', 'categoryDescription': '" + $('#categoryDescription').val() + "'}" 
+0

Мне нужно, чтобы получить categoryDescription от <ввода идентификатора = типа "categoryDescription" = "текст" />
, так что я думаю, что нужно использовать что-то вроде $ ('# categoryDescription') Val (.) – blueDroid

+0

Да, это именно то, что я предложил. –

+1

Darin: Ваш код работает! Я прихожу из ASP.Net, и это мой первый раз l зарабатывая JSON. У меня все еще есть проблема с конкатенацией строк. На основе ваших образцов я собрал следующие данные, и это не сработает. Не могли бы вы проверить его и сообщить, где я делаю ошибку? данные: "{'categoryName': '" + $ (' # categoryName '). Val() + "', 'createdBy': 'jsmith'" + "',' categoryDescription ':'" + $ (' #categoryDescription '). val() + "'}", Большое спасибо. – blueDroid

2

Попробуйте это:

данные: "{CategoryName: '". + $ ('# CategoryName') Вал() + "', categoryDescription:'" + $ ('# categoryDescription'). val() + "'}",

Не забудьте обновить CreateHelpDeskCategory, чтобы принять оба аргумента.

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

данные: "{CategoryName: '" + $ ('# CategoryName') Вал() + " ' categoryDescription:'" + $ . ('#categoryDescription') вал() + "», ModifiedBy: 'JSmith'}",

+1

Alison, Ваш код работал после того, как я заменил ++ на +. Я хочу передать третий строковый параметр на веб-сервер под названием «modifiedBy». Я использовал следующий код, но получаю сообщение об ошибке: data: "{categoryName: '" + $ (' # categoryName '). Val() + "', categoryDescription: '" + $ (' # categoryDescription '). Val () + "', modifiedBy:' jsmith '" + "'}", Спасибо в продвинутом виде. NC8 – blueDroid

+0

Вы могли работать? –

1

Вы должны использовать

data: {categoryName: JSON.stringify($('#categoryName').val()), 
     categoryDescription: JSON.stringify($('#categoryDescription').val())} 

в качестве параметра $.ajax мето д. Функция JSON.stringify может использоваться для сериализации любых данных в JSON (может быть загружена с http://www.json.org/js.html). Ручная сериализация не подходит, по крайней мере, потому, что возможность того, что строка, которая должна быть сериализована, содержит символы, которые должны быть экранированы (например, «» или «\» см. http://www.json.org/).

Посмотрите также на другой вопрос, который я ответил раньше: How do I build a JSON object to send to an AJAX WebService?

+0

Oleg, Я нахожу, что ваш код очень читабельны и понятны. Однако, я наклеил его на свой код, и он не сработал. Что мне не хватает? Спасибо, Nc8 код – blueDroid

+0

WS: [WebMethod] общественности INT CreateHelpDeskCategory (строка CategoryName, строка categoryDescription) {DataCenterDataContext дБ = новый DataCenterDataContext(); попробовать { HelpDeskCategory кот = новый HelpDeskCategory { CategoryName = categoryName.Trim(), CategoryDescription = categoryDescription.Trim(), CreatedDate = DateTime.Now, }; db.HelpDeskCategories.InsertOnSubmit (cat); db.SubmitChanges(); return 1; } catch (исключение) { возвращение 0; } – blueDroid

+0

Я не вижу в вашем коде '[ScriptMethod (ResponseFormat = ResponseFormat.Json)]' атрибута. Используете ли вы его или устанавливаете такое же поведение в web.config (это возможно в .NET 4.0)? – Oleg

Смежные вопросы