繁体   English   中英

在将数据发送到服务器之前,如何从x可编辑字段中删除特殊字符?

[英]How to remove special characters from an x-editable field before sending data to the server?

我想从可编辑文本输入中剥离一些特殊字符,然后在将模型的(剥离后的)文本字段发送到服务器之前,将经过清理的字符串写入本地模型。

根据文档

When you submit editable form it performs following steps:

- call child's onbeforesave
- call form's onbeforesave
- write data to local model (e.g. $scope.user)
- call form's onaftersave
- call child's onaftersave

因此,对于我的可编辑文本输入,我有一个剥离特殊字符并更新本地模型值的方法。 我已经证实这可行; 在beforesave上运行后,模型具有正确的剥离值。 我也知道onbeforesave的返回结果的行为如下:

- string: submit will be cancelled, form will stay opened, string will be shown as error message
- not string: submit will be continued

而且我在onbeforesave函数中返回undefined。

然后,在表单的onaftersave方法中,我将大概更新的数据发送到服务器。

问题是:子onbeforesave内部的更新丢失了。 本地模型或服务器都没有更新的值。

当我将清理方法移到孩子的onaftersave上时,本地模型已成功更新,但是,正如您期望的那样,服务器未获取该更新的信息,因为在孩子的onaftersave之前调用了表单的onaftersave。

如果我不得不猜测,我会说问题是,即使我在onbeforesave中更新模型,在我之后,该值也会被$ data(即输入文本中最初未过滤的数据)覆盖。 onbeforesave函数运行。

因此,在这里看来,我唯一的选择是进一步修改表单的onaftersave,以便在将经过清理的更新数据发送到服务器之前,从文本字段中删除特殊字符。

准确吗? 除了使表单的onaftersave函数膨胀之外,还有其他更优雅的方法吗?

我不确定这是否是最优雅的方法,但是我的工作解决方案是将参数“ this”传递给我的onbeforesave函数,其中“ this”是我的一个子文本输入之一的范围,其中包括$ data属性。 通过在onbeforesave中修改$ data属性,已净化的值将成功传递到本地模型,然后传递到服务器。

您的方法很可能是错误的。

  1. 永远不必剥离字符。 你怎么会 那个unicode号对您有什么作用呢? 无论您面对什么问题,其根源都可能更深。
  2. 如果仍然要删除字符(讨厌太多),请在服务器上而不是在客户端上删除不需要的字符。

始终对客户保持怀疑。 永远不要相信客户发送给您的信息。 在服务器上而不是在客户端上执行您需要做的任何验证/清除工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM