我承认,这是一个非常基本的问题。但我实际上厌倦了它。我只是尝试将我的当前时间以JSON格式从我的动作方法发送到视图。在视图代码中,我试图使用jQuery ajax()方法获取结果。但是在success属性中,我无法从响应中获取结果。尝试了很多方式,如response.d等。但最终几乎没有任何结果。
以下是相关的代码段:
行动方法:
public JsonResult GetDateTest()
{
return Json(DateTime.Now.ToString(), JsonRequestBehavior.AllowGet);
}
视图中的脚本:
<script type="text/javascript">
$(document).ready(function () {
$("#Button1").click(function (e) {
$.ajax({
type: 'POST',
url: '@Url.Action("GetDateTest","GetDate")',
data: '{}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (response) {
//how can I read the date here and display it on the standard //controls like a label?
},
error: function (e) {
alert("error");
}
});
});
});
</script>
帮我解决一下正确的解释
答案 0 :(得分:1)
如果您想要将数据作为json
,请修改您的控制器操作:
public JsonResult GetDateTest()
{
return Json(new { date = DateTime.Now.ToString() }, JsonRequestBehavior.AllowGet);
}
添加成功功能:
success: function (response) {
$("#someLabel").html(response.date);
},
HTML
<div id="someLabel"></div>
答案 1 :(得分:1)
dataType (默认值:智能猜测(xml,json,script或html))
类型:字符串
您希望从服务器返回的数据类型 ...
“json”:将响应计算为JSON并返回一个JavaScript对象。
因此,在您的情况下,响应应该已经被解析为JSON并作为javascript字符串返回。
由于您没有传递任何数据,您可以使用GET的默认方法并将您的示例缩小为
$.ajax({
url: '@Url.Action("GetDateTest","GetDate")',
dataType: 'json',
success: function (response) {
console.log(response);
},
error: function (e) {
alert("error");
}
});
如果您不需要错误回调,则可以使用jQuery.getJSON()
代替并进一步简化
$.getJSON('@Url.Action("GetDateTest","GetDate")',
function (response) {
console.log(response);
});
更新发表评论:
要访问对象的属性,必须将其编码为JSON对象
{
"id": 423,
"name": "john doe",
"salary": 50000
}
在ajax成功函数中,您可以将其作为响应的属性
进行访问success: function(data) {
var id = data.id;
var name = data.name;
var salary = data.salary;
// do something with data properties
}