前端JS传递参数到后端接口查询数据:解决mTypeId查询问题
前端JS传递参数到后端接口查询数据:解决mTypeId查询问题
问题背景:
在前端代码中,使用Ajax请求调用后端接口/warehousing/mineraltype/list,传递mTypeId=1作为查询参数,但接口却返回了全部数据,并没有根据mTypeId进行筛选。
问题分析:
-
后端接口接收参数: 在后端接口
list()方法中,虽然传入了一个VmMineralType对象作为参数,但是并没有给这个对象的mTypeId属性赋值。因此,在查询时并没有根据mTypeId进行筛选,而是返回了全部数据。 -
前端传递参数: 前端代码中,
vmMineralType对象中定义了mTypeId: 1,但并没有将该对象正确地传递给后端接口。
解决方案:
-
修改后端接口: 在后端接口
list()方法中,需要获取VmMineralType对象的mTypeId属性,并根据该值进行查询。 -
修改前端代码: 将
vmMineralType对象作为data参数传递给$.ajax()方法。
代码示例:
前端代码:
formatter: function (value, row, index){
var mineralTypeName = '';
var vmMineralType = {
mTypeId: 1 // 将mTypeId赋值为1
};
$.ajax({
url: ctx + 'warehousing/mineraltype/list',
type: 'post',
data: vmMineralType, // 将vmMineralType作为参数传递
async: false,
success: function(result) {
if (result.code == web_status.SUCCESS) {
mineralTypeName = result.data.mineralTypeName;
}
}
})
return mineralTypeName;
}
后端代码:
@Controller
@RequestMapping("/warehousing/mineraltype")
public class VmMineralTypeController extends BaseController
{
@Autowired
private IVmMineralTypeService vmMineralTypeService;
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(VmMineralType vmMineralType)
{
startPage();
List<VmMineralType> list = vmMineralTypeService.selectVmMineralTypeList(vmMineralType);
return getDataTable(list);
}
}
解释:
-
在前端代码中,将
vmMineralType对象作为data参数传递给$.ajax()方法,这样后端接口就能接收到该对象。 -
在后端代码中,
list()方法接收vmMineralType对象,并通过vmMineralType.mTypeId获取mTypeId的值,然后根据该值进行查询。
注意:
- 前端代码中的
async: false设置了同步请求,保证数据获取成功后再进行表格展示。 - 后端代码中的
startPage()方法用于开启分页查询。
通过以上修改,前端JS就能将mTypeId作为参数传递到后端接口,并根据该值进行数据筛选。
总结:
- 前后端代码的交互需要保持一致,确保参数传递正确。
- 后端接口需要根据传递的参数进行逻辑判断,并返回正确的结果。
- 前端代码需要处理后端返回的结果,并进行相应的展示。
原文地址: https://www.cveoy.top/t/topic/nALu 著作权归作者所有。请勿转载和采集!