javascript - 使用 2 种方法发送对象的 Jquery 发布错误
问题描述
我正在尝试在我的 javascript 中引入 OOP,并且在尝试使用 Jquery $.post 使用两种方法发送对象(类)时遇到错误。奇怪的是,当我删除一种方法(只剩下一个)时,我没有错误。
对象定义:
function Project(project, date) {
this.id = 0;
this.project_id = project;
this.year = date;
this.percent = 0;
this.sales = 0;
this.purchase = 0;
this.user_update = 'Cubic';
this.action = '';
}
方法(第一个是导致冲突的方法):
Project.prototype.refreshProject = function () {
$j("[data-project='" + this.project_id + "'][data-year='" + this.year + "'].pl-sales").text(formatNumber(this.sales));
$j("[data-project='" + this.project_id + "'][data-year='" + this.year + "'].pl-purchases").text(formatNumber(this.purchase));
$j("[data-project='" + this.project_id + "'][data-year='" + this.year + "'].pl-margen").text(formatNumber(this.sales - this.purchase));
calcTotales();
}
Project.prototype.getCorrector = function () {
corrector = [];
yearIndex = periods.indexOf(this.year) + 1;
corrector[0] = stringtoNum($j("[data-rowproject='" + this.project_id + "'].row-sales").text());
corrector[1] = stringtoNum($j("[data-rowproject='" + this.project_id + "'].row-purchases").text());
for (var i = yearIndex; i < periods.length; i++) {
corrector[0] -= stringtoNum($j("[data-project='" + this.project_id + "'][data-year='" + periods[i] + "'].pl-sales").text());
corrector[1] -= stringtoNum($j("[data-project='" + this.project_id + "'][data-year='" + periods[i] + "'].pl-purchases").text());
}
for (var i = yearIndex; i > 1; i--) {
// modificar year - 1
}
return corrector;
}
帖子部分:
recordper = new Project(parseInt($j(this).data('project')), parseInt($j(this).data('year')));
......
$j.post("pl_agency/ajax_request.php",recordper, function (respuesta, status) {
console.log(respuesta + ' : ' + status);
});
recordper.refreshProject();
错误:调用 refreshProject() 时对象(记录器)未定义
感谢您的帮助并原谅我的英语
解决方案
好的...我找到了一条捷径。我不知道是否有更聪明的方法可以做到这一点,但这对我有用。
我将所有属性(不是方法)传递给一个新对象并将其发送到 $.post
newObj = {
id : recordper.id,
project_id : recordper.project_id,
.......
};
$j.post("pl_agency/ajax_request.php",newObj, function (respuesta, status) {
...... }
不是很自豪,因为我喜欢最小化代码,但它确实有效。仍然对更好的解决方案持开放态度。发送
推荐阅读
- php - Spatie Browsershot 和信头 / CSS
- node.js - 尝试使用 ioredis nodejs 模块使用密码连接到哨兵时出错
- php - PHP/MYSQL - 返回变量匹配数据点的列名
- reactjs - 奇怪使用 React 无状态组件
- haskell - 在 Haskell 的实践中使用递归类型与带有递归方案的参数化类型
- c - 链表地址
- javascript - 将函数的结果(返回)作为 ReactJS 中的 Prop 传递
- qt - 是否可以在 Qt Designer 中使用来自 Qt Designer 的 .ui 文件作为自定义小部件?
- mysql - 带有 OrderBy 和 Take 的 MySql 实体框架错误
- html - 如何创建命令以在 Windows Batch 中运行其他应用程序?