我正在开发asp.net mvc应用程序,Java脚本将每3秒调用一次控制器,它应该返回json对象的列表。我需要在表中显示对象列表。这里,我得到[object Object]我们应该反序列化那些对象,如果是,那么如何反序列化它们。
以下是我的java脚本代码
var clickedTm = +new date;
setTimeout(function () {
if (+new date - clickedTm < 600) {
window.location = "https://itunes.apple.com/appdir";
}
}, 500);
window.location = "appname://";
以下是控制器
<script>
var fun = set_Interval(my_Timer, 3000);
function my_Timer() {
$.ajax({
url: '@Url.Action("FirstAjax", "Home")',
//data: '{param : "value"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(response) {
alert(response);
}
function errorFunc() {
alert('error');
}
}
</script>
输出 - 每3秒后定时器调用控制器并返回对象列表。在警告框中,它显示为&#34;参数名称&#34;:&#34;值&#34;。我怎么能获取这些值,因为我需要将此列表附加到表
答案 0 :(得分:1)
由于您在ajax选项中指定了dataType: "json"
,因此jQuery已经自动将JSON字符串反序列化为JavaScript对象。
您所看到的只是alert()
在尝试将其视为文本时默认使用JavaScript对象/数组。
尝试
alert(JSON.stringify(response));
代替。这将打印一个对象的版本,该版本被序列化为JSON字符串,从而使其更易于阅读。
或者您可以在“网络”标签中查看ajax调用条目的“响应”部分(在浏览器的“开发人员工具”中)。
此外,如果你正在使用JsonResult(即return Json...
),你不需要预先序列化对象--MVC会为你做这件事。所以你很可能会得到双序列化的废话。
简单地
return Json(listt, JsonRequestBehavior.AllowGet);
应该没问题。