从控制器内部视图中显示json数据

时间:2012-07-20 08:24:46

标签: c# javascript ajax json asp.net-mvc-3

在我的控制器内部有JsonResult动作,它返回一个House对象列表。 我希望onclick使用ajax来检索这些数据并在我的视图中显示json数据。 在firebug里面,我能够看到正确的Response和Json结果,但我不知道如何在我的视图中显示。

function GetTabData(xdata) {
    $.ajax({
        url: ('/Home/GetTabData'),
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({ id: xdata }),

        success: function (result) {
           // tried with these but it doesnt work
           // result = jQuery.parseJSON(result);
           // alert(result.Title);
        },
        error: function () { alert("error"); }
    });
}

public JsonResult GetTabData()
{
   ...
   var temp = getMyData...
   return Json(temp, JsonRequestBehavior.AllowGet);   
}


  // View page
     <div id="showContent">
       // Json data should appear here
     </div>

成功时内部firebug JSON选项卡:function(result)为空 我有以下数据:

Id  149

PropertyType    "Apartment"

StreetNumber    "202B"

CityName        "Sidney"

Title           "My test data"

3 个答案:

答案 0 :(得分:2)

首先,您可以在ajax调用'json'中指定dataType属性,然后不必再次解码json响应 -

dataType: 'json'

然后,您不需要使用parseJSON。只需使用result.Title等。

 success: function (result) {
           alert(result.Title);
           var showContent = $('#showContent');
           showContent.html(result.Id+','+result.Title);
        },

答案 1 :(得分:2)

编辑:正如Mukesh所说,你可以让ajax函数返回json而不使用任何额外的解码。

ajax调用结果已经是一个对象。你可以用里面成功函数做任何你想做的事。

例如,您可以在函数内动态创建信息表,或者通过调用该success函数内的函数将数据发送到另一个函数。离开成功函数后,数据将不再可用。

像任何对象一样访问数据对象(data.someProperty)。

答案 2 :(得分:2)

success: function (json) {
  var data = null;

  $.each(json.items,function(item,i){
    data = '<div>'+item.Id+ ' ' + item.CityName +'</div>';    
    $("#showContent").append(data);
 });

}