Я относительно новичок в использовании JSON и столкнулся с проблемой, которую я не могу решить. Я установил общий обработчик (подробно описано ниже), а также страницу с вызовом JSON, чтобы получить ответ от обработчика и отобразить его.
Страница с вызовом JSON:
<script type="text/javascript">
$(document).ready(function () {
triggerCall();
function triggerCall() {
$.ajaxSetup({
type: 'POST',
headers: { "cache-control": "no-cache" }
});
$.ajax
(
{
type: "POST",
url: "Services/DepartmentListHandler.ashx",
contentType: "application/json;charset=utf-8",
dataType: "json",
async: false,
cache: false,
success: function (data) {
alert(data.msg);
displayDirectory(data.msg);
},
error: function (x, e) {
alert("The call to the server side failed. " + x.responseText);
}
}
);
}
function displayDirectory(dirlist) {
var tablestring = '<table class="centered-table"><tr><td colspan="2">';
tablestring = tablestring + "<tr><td><u>DeptCode</u></td><td><u>HeaderText</u></td></tr>";
for (var i = 0, len = dirlist.length; i < len; ++i) {
tablestring = tablestring + "<tr>";
tablestring = tablestring + " <td>" + dirlist[i].DeptCode + "</td>";
tablestring = tablestring + " <td>" + dirlist[i].HeaderText + "</td>";
tablestring = tablestring + "</tr>";
}
tablestring = tablestring + "</table>";
$('#divDirectoryList').html(tablestring);
}
});
</script>
<div id="divDirectoryList"></div>
Метод обработчика:
Public Class DepartmentListHandler
Implements System.Web.IHttpHandler
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim json = New JavaScriptSerializer()
Dim lst As New List(Of DepartmentList)
Dim cls1 As New DepartmentList(1, 0, "DEP1", "Header", 1, True, False)
lst.Add(cls1)
Dim serialisedList As String = json.Serialize(lst)
context.Response.ContentType = "application/json"
context.Response.Write(serialisedList)
End Sub
ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
Все, кажется, происходит, что предупреждение в ветке "success" возвращает "undefined" каждый раз, и таблица вообще не отображается.
Может ли кто-нибудь увидеть, где я ошибаюсь?
Большое спасибо!
Я думаю, что данные json, которые вы сериализуете в нашем коде, неправильно отформатированы. Данные json, которые должны отображаться как "data.msg", должны быть получены как
{
msg: 'some message',
data:'some data'
};
Фактически на стороне клиента вы получите коллекцию объектов [object Object], этот объект содержит ваш список объектов.
Print console.log("данные", данные); и увидеть в лисице.
вы можете просто получить
data[0].msg;
data[0].id;
или вы можете выполнить итерацию объекта java-скрипта с помощью jquery, а затем получить как ниже
data.msg;
data.id