MVC4 ajax调用并正确返回数据

MVC4 ajax call and return data properly

本文关键字:返回 数据 ajax 调用 MVC4      更新时间:2023-09-26

我使用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

要实现这一点,如何在操作中操作返回对象?我需要这样做,以运行这个web应用程序与绝对相同的javascript在JAVA和。net环境。

返回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);
        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)