我试图在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)
答案 0 :(得分:0)
你可以使用jQuery.parseJSON()来解析对JSON的ajax响应。
但从您的代码看,似乎响应应该已经在JSON中,因为dataType参数已经设置为“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;