如何使用javascript

时间:2015-07-31 04:59:36

标签: javascript ajax json asp.net-mvc arraylist

我试图在ajax成功中解析json datalist但它无法正常工作。我已经使用json从控制器传递包含数据列表的对象到视图,我帮助解析ajax成功中的json对象。我在下面附上了我的代码。

//从控制器返回json对象

 PurchaseDetails pd = new PurchaseDetails();
   foreach (DataRow dr in dt.Rows)
                    {
                        pd.serialList.Add(new SerialInfo { 
                            Machine_serial_no = dr[0].ToString(), macAddress = dr[1].ToString(), isMacPresent = _TD1.CheckMac(machineTypes_MTId),brandName=obj.brandName,machineName=obj.machineName,MachineModel=obj.MachineModel,modelId=modelId,machineId=obj.machineId,brandId=obj.brandId});

                        // pd.macaddressList.Add(new MacAddressInfo { MacAddress = dr[1].ToString() });
                    }                   
                }
            }
            return Json(new {pd}, JsonRequestBehavior.AllowGet);
     return Json(new {pd}, JsonRequestBehavior.AllowGet);

//我的ajax代码

$.ajax({
    url: "/Import/ImportPurchase",
    type: "POST",
    data: function () {
        var data = new FormData();
        data.append("file", jQuery("#file").get(0).files[0]);                                 
        data.append("machineTypes_MTId", jQuery('#machineTypes_MTId').val());
        data.append("modelId", jQuery('#searchValue').val());
        data.append("modelName", jQuery('#searchid').val());
        return data;
    }(),
    dataType:"JSON",
    contentType: false,
    processData: false,
    success: function (data) {                        
        alert(data.Machine_serial_no)

3 个答案:

答案 0 :(得分:0)

你可以使用jQuery.parseJSON()来解析对JSON的ajax响应。

但从您的代码看,似乎响应应该已经在JSON中,因为dataType参数已经设置为“JSON”。

试试这个:

  • 删除“data”参数中函数结束括号后的“()”。
  • 尝试使用console.log(数据)并查看浏览器控制台的响应, 响应可能不是有效的json字符串。

答案 1 :(得分:0)

如果您正在寻找转换js数组到JSON,那么只需使用JSON.stringify()函数。这会将您的JS变量data值转换为JSON格式。

您可以更多地找到here

答案 2 :(得分:0)

您的控制器方法正在返回

return Json(new { serialObj = pd}, JsonRequestBehavior.AllowGet);

这是一个包含名称serialObj

的对象

因此,在ajax成功回调中,您需要使用

访问它
success: function (data) {
  var PurchaseDetails = data.serialObj;

由于PurchaseDetails包含名为serialList的集合,该集合是SerialInfo的集合,因此要访问第一个Machine_serial_no的值,它将是

var serialNo = data.serialObj.serialList[0].Machine_serial_no;

然而,使用

会更容易
return Json(pd, JsonRequestBehavior.AllowGet);

如果您想要访问集合中的每个Machine_serial_no属性,请使用

success: function (data) {
  $.each(data.serialList, function(index, item) {
    var serialNo = item.Machine_serial_no;