1

我有一种情况,当访问网页时,控制器操作会运行,该操作会根据用户选择检索该页面的数据。我试图将数据作为 JSON 对象发送回页面,但是,数据在 HTML 页面中作为一个大字符串打开。简而言之,控制器操作类似于以下代码段:

Public JsonResult MyMethod(string userSelection)
{

    string userData = (string) Data;
    return Json(userData, “text”, JsonRequestBehavior.AllowGet);
}

我首先尝试使用 JQuery$.getJson()方法,但我认为这是错误的,因为我认为它会再次调用数据的操作方法,这不是我想要做的。我想要的是访问 JavaScript 代码中的 JSON 对象,这样我就可以使用属性数据来填充网页上的字段。基本问题是我必须在我的 JavaScript 中做什么才能在页面首次呈现时接收 JSON 对象?如果我遗漏了一些基本的东西,我深表歉意;这是我的第一次尝试。

4

3 回答 3

1

今天我仍然没有运气,但是当我下班时,我想出了一个步行到我的车的策略。用户在进入我无法弄清楚如何使用 JsonResult 的页面之前从显示列表的页面中进行选择。部分问题是用户选择包含一个链接,该链接调用返回 JsonResult 的控制器/操作,这与在我要使用 JsonResult 的页面中使用 $.getJson() 冲突。所以这是我的策略:当用户做出将他们带到(有问题的)页面的选择时,我将调用一个严格使用(ASP)ViewData 的控制器/动作,并使用 ViewData 最初呈现该页面。进入页面后,用户可以更改选择——我将使用一个使用 $ 的 JavaScript 事件来处理它。getJason() 调用与 (ASP) JsonResult 一起使用的不同控制器/操作方法。在我尝试了这个策略之后,我会将我的结果发布给任何感兴趣的人。

于 2012-05-30T00:07:09.640 回答
0

parseJSON不想getJSON

http://api.jquery.com/jQuery.parseJSON/

编辑 - 哦,等等,您将浏览器指向JsonResult就好像它是ActionResult? 那是行不通的。

渲染一个正确的视图,并使用getJSON来调用JsonResult动作。

于 2012-05-25T18:14:43.733 回答
0

getJSON就是要找的。在 DOM 完成加载后执行的 DOM 就绪事件上调用它。

$(function(){
 //This code will be executed on the DOM ready ( when the page is loaded)

  $.getJSON("YourControllerName/MyMethod?userSelection=someValue",function(data){

      alert(data.FirstName);     
      alert(data.AnotherPropertyName);    

   });
});

getJSON是 jQueryajax方法的简写,数据类型设置为json

假设您正在重新调整的 JSON 数据是这样的

{
    "FirstName": "Scott",
    "AnotherPropertyName": "SomeValue"
}

要返回上述数据,请更改您的 Action 方法,如下所示

public JsonResult MyMethod(string userSelection)
{
  var result=new { FirstName="Scott", AnotherPropertyName="Great"};
  return Json(result,JsonRequestBehavior.AllowGet);
}
于 2012-05-25T18:15:33.470 回答