我使用下面的ajax在控制器中调用一个动作。
$.ajax({
type: "POST",
url: "getUserInfo.json",
data: "",
success: function (data) {
if (data.resultInfo.result != "SUCCESS") { alert("error"); return; }
setUserInfo(data.userInfo);
//alert(data.resultInfo.result);
//alert(data.resultInfo.message);
settingMenu();
//historyBackProc(); //histroyback catch
},
error: function (data) {
alert(data.resultInfo.message);
}
});
最终调用的是这个动作。
public ActionResult getUserInfo()
{
if ( Session["UserInfo"] != null ) {
ViewData.Add("resultInfo", new resultInfo("SUCCESS"));
ViewData.Add("UserInfo", Session["UserInfo"]);
return Json(ViewData);
}
else
{
return RedirectToAction("index.mon");
}
}
并回到ajax成功回调,数据不是我想要的。
我想要的是,
data
- "resultInfo" : object
- "UserInfo" : object
但它最终只有对象,而不是键。
data
- object[0]
- Key : "resultInfo"
- Value : object
- object[1]
- Key : "UserInfo"
- Value : object
要实现这一点,如何操作动作中的返回对象? 我需要这样做以在JAVA和.NET环境中使用完全相同的javascript运行此Web应用程序。
答案 0 :(得分:1)
返回JSON时无需使用ViewData
。您收到的结果是ViewData
是字典。
使用
return Json(new {
resultInfo = new resultInfo("SUCCESS"),
UserInfo = Session["UserInfo"]
});
而不是
ViewData.Add("resultInfo", new resultInfo("SUCCESS"));
ViewData.Add("UserInfo", Session["UserInfo"]);
return Json(ViewData);
答案 1 :(得分:0)
Dim data As New SortedDictionary(Of String, String)
data.add("key","value")
data.add("key2","value2")
Dim serializer As New JavaScriptSerializer()
Return serializer.Serialize(data)