【问题标题】:In asp.net-mvc, how can I replicate creating this using javascript instead of serverside C#?在 asp.net-mvc 中,如何使用 javascript 而不是服务器端 C# 复制创建它?
【发布时间】:2014-06-05 00:33:09
【问题描述】:

我有一个 asp.net-mvc 页面,在我看来,在我的 javascript 中,我有这样完美的代码:

MyView.aspx

  <script type="text/javascript">

     var apps = <%= new JavaScriptSerializer().Serialize(Model.Apps) %>;
     SetupApplications(apps);

  </script>

(Apps 是一个字符串数组)。

我现在需要将其更改为从 ajax 方法调用。我尝试了一些东西,但似乎都没有。我从服务器端控制器操作传回一个字符串数组,如下所示:

     return Json(new { 
            Apps = GetAppsStringArray()
        });

在客户端的 javascript 回调中,我调用了相同的方法:

  $.post("/MyController/MyAction", function (data) {
        SetupApplications(JSON.stringify(data.Apps) }
    , "json");

您认为为什么这些不相等有什么缺陷吗?

【问题讨论】:

  • “但似乎都不起作用”不是对问题的一个很好的解释。考虑使用调试器(大多数浏览器至少内置了一个),看看发生了什么。

标签: jquery ajax arrays asp.net-mvc stringify


【解决方案1】:

您正在从通过解析响应中获得的 JSON 字符串创建的对象创建 JSON 字符串。由于SetupApplications 函数在第一个版本的代码中不采用 JSON 字符串,因此在第二个版本中也不应该这样做。只需将对象传递给函数,而无需再次将其转换为 JSON:

$.post("/MyController/MyAction", function (data) {
  SetupApplications(data.Apps);
}, "json");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多