如何读取AJAX请求返回的JSON数据并将不同字段赋值给对应变量
解决AJAX返回JSON数据读取赋值问题
问题根源
你alert弹出object Object是两个原因导致的:
- 后端用
ToList()查询,返回的MovementInventory是数组对象,不是单个值,alert方法无法直接打印对象结构 - 你需要先明确
InventoryMovement实体类的属性名(对应数据库的列名),才能读取对应列的值
调试前置操作
先替换AJAX的success回调代码,用浏览器控制台查看返回数据结构:
success: function (data) { if (data.Success == true) { // 按F12打开浏览器开发者工具,在「控制台」面板可以看到完整的返回数据结构 console.log('完整返回数据', data) } }
展开控制台打印的MovementInventory对象,就能看到所有可读取的属性名,对应你要取的两列即可。
代码修改方案
方案1:单条数据查询(推荐,同一个Id仅对应一条库存移动记录时使用)
首先修改后端代码,把ToList()改为FirstOrDefault(),直接返回单个对象而不是数组:
public ActionResult GetData(int Id) { var Movement = db.InventoryMovement.FirstOrDefault(x => x.PartNo_Id ==Id); return Json(new { Success = true, MovementInventory = Movement }); }
再修改前端代码读取对应列的值,示例代码如下,把字段1、字段2替换成你实际的实体类属性名即可:
success: function (data) { if (data.Success == true) { var inventoryMovement = data.MovementInventory; // 读取两列值赋值给变量 var firstColumnVal = inventoryMovement.字段1; var secondColumnVal = inventoryMovement.字段2; // 测试打印 console.log('第一列值:', firstColumnVal) console.log('第二列值:', secondColumnVal) } }
方案2:多条数据查询(同一个Id对应多条库存移动记录时使用)
保留后端ToList()写法,前端通过下标取对应行的列值,或遍历所有行:
success: function (data) { if (data.Success == true) { var inventoryMovement = data.MovementInventory; // 示例:取第一条记录的两列值 var firstColumnVal = inventoryMovement[0].字段1; var secondColumnVal = inventoryMovement[0].字段2; // 如需遍历所有记录可参考如下写法 // inventoryMovement.forEach(item => { // console.log(item.字段1, item.字段2) // // 逐行处理赋值逻辑 // }) } }
内容的提问来源于stack exchange,提问作者Yrox Mk
相关产品推荐
相关产品推荐

