コントローラー方式があります
[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は成功して戻りますが、「data」はnullです。デバッグ中、responseTextは空です。サーバー側では、GetUserDataが呼び出され、適切にフォーマットされたJsonオブジェクトが返されます(独自のJSON ActionResultを作成し、データが実際に応答ストリームに書き込まれていることを確認しました。
サーバー側のメソッドにダミーパラメータを追加すると、次のようになります。
[HttpPost]
public ActionResult GetUserData(string temp)
{
return Json(GetCurrentUser));
}
すべてが完璧に機能します。ブラウザはIE8です。私の質問は、なぜこれが起こっているのか誰かが説明できますか?
アップデート:
以下の回避策に注意してください:私はまだ根本的な原因を知ることに興味があります。