Передать объект в службу WCF с помощью JQuery - PullRequest
2 голосов
/ 29 октября 2010

Я знаю, что здесь есть вопросы, задающие точно то же самое, но, несмотря на то, что я читаю их, я все еще что-то упускаю, и, надеюсь, вы можете помочь!

Это очень просто, используя шаблон WCF, который добавленVS!

Интерфейс:

[OperationContract]
[WebInvoke(Method = "POST",
    ResponseFormat = WebMessageFormat.Json,
    RequestFormat= WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Wrapped)]
CompositeType GetDataUsingDataContract(CompositeType composite);

Реализация:

public CompositeType GetDataUsingDataContract(CompositeType composite){
  if (composite == null)
  {
      throw new ArgumentNullException("composite");
  }
  if (composite.BoolValue)
  {
      composite.StringValue += "Suffix";
  }
  return composite;  

}

Javascript:

$.ajax({
  type: "POST",
  url: "http://localhost:1545/Service1.svc/GetDataUsingDataContract",
  data: JSON.stringify(compType),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  processdata: true,
  success: function (msg) {
      $("#txtTest").val(message.BoolValue + " : " + message.StringValue);
  },
  error: function (xhr, errorMsg, thrown) {
      $("#error").html(xhr.responseText);
}

});

Ошибка, которую я получаю: сервер обнаружил ошибку при обработке запроса.Сообщение об исключении: «Значение не может быть нулевым.Имя параметра: составной '.

Таким образом, значение не передается, его значение равно нулю, когда оно попадает в службу WCF.

* Примечание. Я пытался вызывать методы, которые принимают строку и возвращаютсоставной тип, который отлично работает *

Спасибо заранее за вашу помощь

1 Ответ

0 голосов
/ 23 июня 2014

Вот как построить compType так, чтобы JSON.stringify() выдавал то, что ожидает служба:

var compType = { composite: { StringValue: "MyString", BoolValue: true } };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...