В веб-службе ASP.net, если указанное выше не указано, каков формат ответа по умолчанию? Кроме того, если мой веб-сервис ниже:[ScriptMethod (ResponseFormat = ResponseFormat.Json)]
[WebMethod()]
public List<Sample> GenerateSamples(string[][] data)
{
ResultsFactory f = new ResultsFactory(data);
List<Sample> samples = f.GenerateSamples();
return samples;
}
возвращает список объектов, если изменить формат ответа на JSON, я должен изменить тип возвращаемого в строку, то как я могу получить доступ к объектам в моей JavaScript ?
В настоящее время я называю это веб-сервис в моих JS, такие как:
$.ajax({
type: "POST",
url: "http://localhost/TemplateWebService/Service.asmx/GenerateSamples",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
var samples = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
if (samples.length > 0) {
doSomethingHere(samples);
} else {
alert("No samples have been generated");
}
},
error: function(xhr, status, error) {
var msg = JSON.parse(xhr.responseText);
alert(msg.Message);
}
});
Что я заметил, хотя, несмотря на то, что все работает прекрасно, оператор Eval никогда не будет выполнен, а это означает, что веб-сервис всегда возвращается строка!
Так что мой вопрос: [ScriptMethod (ResponseFormat = ResponseFormat.Json)] необходим на стороне определения веб-сервиса?
Теперь я могу использовать массив образцов и доступ к каждому объекту и его свойствам, как обычно, в любом коде ООП, что очень удобно, и все не работает, но я просто хотел убедиться, что Я ничего не теряю в своей настройке.
Я взял основы совмещения ajax Jquery с asp.net со стороны Encosia, и тип ответа там не упоминался - я читал его на другом сайте, и я не уверен, насколько он жизненно важен.
http://www.codeproject.com/KB/webservices/JsonWebServiceJQuery.aspx
Списки 4 различных изменений на стороне asp.net веб-службы. У меня только первые 2 - в моем web.config. Сама служба и класс Sample реализованы без какой-либо сериализации, однако у нее есть свойства. Я полагаю, что веб-сервис JSON по умолчанию? И до тех пор, пока ваши объекты имеют свойства, по умолчанию они сериализуются? Это было мое понимание, пока я не прочитал эту статью.
Ваш первый вопрос (какой формат ответа по умолчанию?) Легко ответить: запустите отладчик JavaScript и узнайте. Или передайте его в 'alert()' или что-то еще. – Tomalak