我有一个控制器方法
[HttpPost]
public ActionResult GetUserData()
{
return Json(GetCurrentUser());
}
我通过这样的方法调用它 $.ajax() :
ServerCall: function (method, args, callback) {
$.ajax({
type: 'POST',
url: method,
data: JSON.stringify(args),
contentType: 'application/json;charset=utf8',
dataType: 'json',
success: function (result) {
if (callback) {
callback(result);
}
},
error: function (err) {
}
});
}
电话是:
ServerCall('GetUserData', null, function(data){
});
实际上,当我进行此调用时,$.ajax 成功返回,但“数据”为空。调试,responseText 为空。在服务器端,调用 GetUserData,它返回一个格式正确的 Json 对象(我已经创建了自己的 JSON ActionResult 并验证了数据确实正在写入响应流。
如果我向服务器端方法添加一个虚拟参数:
[HttpPost]
public ActionResult GetUserData(string temp)
{
return Json(GetCurrentUser));
}
一切正常。浏览器是IE8。我的问题是,谁能解释为什么会这样?
更新:
请注意以下解决方法:我仍然有兴趣了解根本原因。