Javascript $http.get请求在成功时获取字符串而不是json(Angular JS)

Javascript $http.get请求在成功时获取字符串而不是json(Angular JS),javascript,json,ajax,angularjs,http,Javascript,Json,Ajax,Angularjs,Http,控制器返回数据,但是我不能在HTML文件中对其进行迭代。但是,使用表达式{{phones}}直接显示返回的数据。我相信数据是作为字符串而不是json返回的。我期待与循环中返回的所有数据对应的名称和代码段 <body ng-app="phonecatApp" ng-controller="PhoneListCtrl" > Search: <input ng-model="query"> Sort By: <select ng-model="or

控制器返回数据,但是我不能在HTML文件中对其进行迭代。但是,使用表达式{{phones}}直接显示返回的数据。我相信数据是作为字符串而不是json返回的。我期待与循环中返回的所有数据对应的名称和代码段

<body ng-app="phonecatApp" ng-controller="PhoneListCtrl" >
    Search: <input ng-model="query">
    Sort By:
    <select ng-model="orderByFilter">
        <option value="name">Alphabetical</option>
        <option value="age">Numerical</option>
    </select>
    <ul>
        <li ng-repeat="phone in phones | orderBy:orderByFilter">
            <span>{{phone.name}}</span>
            <span>{{phone.snippet}}</span>
        </li>
    </ul>

    <script src="~/Scripts/AngularScript.js"></script>

</body>
控制器动作法

public JsonResult GetJson()
        {
            string variablename = "[{'name': 'Nexus S','snippet': 'Fast just got faster with Nexus S.', 'age': 1}]";
            return Json (variablename, JsonRequestBehavior.AllowGet);                
        }

因为您已经有了JSON格式的数据,所以不需要使用方法
JSON
,因为它会在封面下再次序列化对象。您可以使用方法
内容

public ActionResult GetJson()
{
    string variablename = "[{'name': 'Nexus S','snippet': 'Fast just got faster with Nexus S.', 'age': 1}]";
    return Content(variablename);
}
或者,不提供硬编码数据,您可以创建一个对象,并允许方法
Json
序列化该对象:

public ActionResult GetJson()
{
    var resultObject = new object [] {
        new {
            name="Nexus S",
            snippet= "Fast just got faster with Nexus S.", 
            age= 1
        }
    };
    return Json (resultObject, JsonRequestBehavior.AllowGet);                
}

您还可以在客户端修复此问题。只需解析响应,然后将其设置为
phones

$scope.phones = JSON.parse(data);

问题可能是您将内容作为字符串传递,因为它已经序列化为JSON而不是对象

您可以通过以下方式返回该内容:

public ActionResult GetJson()
{
    string variablename = "[{'name': 'Nexus S','snippet': 'Fast just got faster with Nexus S.', 'age': 1}]";
    return Content (variablename, "application/json");                
}
但是,最好的选择是传递一个对象,并让
Json()
将其序列化为该答案中所示的@dotnetom

public ActionResult GetJson()
{
    string variablename = "[{'name': 'Nexus S','snippet': 'Fast just got faster with Nexus S.', 'age': 1}]";
    return Content (variablename, "application/json");                
}