【问题标题】:Jquery.Parse Json not workingJquery.Parse Json 不工作
【发布时间】:2014-01-21 05:51:15
【问题描述】:

我正在向我的控制器发出一个简单的发布请求,该请求返回一个我试图解析的 json 对象,但它不起作用。

public ActionResult GetViewEditData(int machineID)
        {
            ViewBag.MachineData = Json(PMIComputerModel.GetViewEditDetails(machineID));
            return View("GetViewEditData");
        }

Ajax call
function GetDetails(crntAnc, mode) {
        var id = $(crntAnc).parents('tr:first').find('td:first').attr('id');
        alert(id);
        $.ajax({
            url: '/Home/GetViewEditData/',
            contentType: "application/json; charset=utf-8",
            type: 'POST',
            data: "{'machineID': '"+ id +"'}",
            success: function () {

            },
            error: function (e, jqxhr, settings, exception) {
                if (jqxhr != null)
                    alert(jqxhr.responseText);
            }
        });
var data = '@ViewBag.MachineData';
        alert(data);
        alert(jQuery.parseJSON(data));
        }

在错误块中,它是未定义的。我想要做的就是在我的 javascript 中解析我的 josn 数据。

被序列化的类:

 public class PMICheckListWrapper
        {
            public PMIMachine Machine { get; set; }
            public List<PMICheckListResponse> CheckResponseList { get; set; }
        }

PS:编辑:由于我没有访问成功函数,也没有返回任何东西,所以我在 ajax 帖子之外采用了解析逻辑,但它仍然会到来

var data = '@ViewBag.MachineData';
        alert(data); // blank
        alert(jQuery.parseJSON(data)); //null

【问题讨论】:

  • 不用再解析了,因为dataType: 'json',已经存在了
  • 我正在通过 viewbag 访问数据,但它没有进入该代码块\
  • 好的 pranav,我如何访问它我将 json 对象传递给 viewBag 并返回视图然后尝试访问它。
  • @ankur 你能发布你的数据值吗
  • 永远不要使用alert 进行调试,而是使用console.log。您无法在警报中看到对象,而您可以在控制台中看到。

标签: jquery json asp.net-mvc-3


【解决方案1】:

我认为你必须返回部分视图

public ActionResult GetViewEditData(int machineID)
        {
            // ViewBag.MachineData = Json(PMIComputerModel.GetViewEditDetails(machineID));
            return PartialView("GetViewEditData");
        }

在成功块中,

success: function (data) {

                $('#dvViewBox').html(data);
            },

或者如果你想返回 Json 本身,

var result = PMIComputerModel.GetViewEditDetails(machineID);
return Json( new { value = result },JsonRequestBehavior.AllowGet);

在成功块中,

success: function (data) {
 alert(jQuery.parseJSON(data.value));
  // do your logic     
  },

【讨论】:

  • 不,我不需要部分视图,因为根据设计不需要它。我只是想访问数据,如果我能够访问我的 json 数据,那么我将对其进行解析并执行业务逻辑
  • 很难从您的问题中理解,在这种情况下您返回 Json,而不是整个视图,这就是它显示错误的原因。
  • 它应该像我编辑的那样,虽然没有经过测试。希望它有所帮助。
  • 您能否提供完整的方法以及发布和响应,以及如何访问它以便解决问题...
猜你喜欢
  • 2016-05-13
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多