После попытки отформатировать данные JSON вручную в javascript и неудачно, я понял, что, вероятно, лучший способ. Вот как выглядит код для метода веб-службы и соответствующих классов в С#:
[WebMethod]
public Response ValidateAddress(Request request)
{
return new test_AddressValidation().GenerateResponse(
test_AddressValidation.ResponseType.Ambiguous);
}
...
public class Request
{
public Address Address;
}
public class Address
{
public string Address1;
public string Address2;
public string City;
public string State;
public string Zip;
public AddressClassification AddressClassification;
}
public class AddressClassification
{
public int Code;
public string Description;
}
Веб-сервис отлично работает с использованием SOAP/XML, но я не могу получить корректный ответ с помощью javascript и jQuery, потому что сообщение, которое я получаю с сервера, имеет проблему с моим JSON с ручным кодированием.
Я не могу использовать функцию jQuery getJSON
, потому что для запроса требуется HTTP POST, поэтому я использую более низкую функцию ajax
:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://bmccorm-xp/HBUpsAddressValidation/AddressValidation.asmx/ValidateAddress",
data: "{\"Address\":{\"Address1\":\"123 Main Street\",\"Address2\":null,\"City\":\"New York\",\"State\":\"NY\",\"Zip\":\"10000\",\"AddressClassification\":null}}",
dataType: "json",
success: function(response){
alert(response);
}
})
Функция ajax
отправляет все, что указано в data:
, где моя проблема. Как создать правильно отформатированный объект JSON в javascript, чтобы я мог подключить его к моему вызову ajax
так:
data: theRequest
В конечном итоге я буду извлекать данные из текстовых входов в формах, но на данный момент жестко запрограммированные тестовые данные в порядке.
Как создать правильно отформатированный объект JSON для отправки в веб-службу?
UPDATE: Оказывается, проблема с моим запросом не была форматированием JSON, как T.J. указал, что мой текст JSON не соответствует требованиям веб-службы. Здесь действительный запрос JSON на основе кода в WebMethod:
'{"request":{"Address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}'
Это вызвало еще один вопрос: Когда чувствительность к регистру важна в запросах JSON для веб-служб ASP.NET(ASMX)?