如果 Webhooks 响应错误,则停止 Ninja Forms 的进度
Posted
技术标签:
【中文标题】如果 Webhooks 响应错误,则停止 Ninja Forms 的进度【英文标题】:Halt progress of Ninja Forms if Webhooks respond with error 【发布时间】:2019-01-29 18:46:52 【问题描述】:我正在 Wordpress 中设置 Ninja Forms。我想使用 Webhooks 扩展将代码发布到外部 URL。如果代码正确,Ninja Forms 应该继续提交数据。如果代码错误,则用户应收到错误消息并重试。
我该怎么做,如果中断提交,我看不出有什么办法?
【问题讨论】:
【参考方案1】:在 Ninja Form 中,当你使用 webhook 时,我猜你可能会用这段代码捕捉到 API 的错误响应
$data['errors']['form'][] = $this->submit_response->result[0]->error;
所以当 API 响应错误时,在这种情况下用户没有机会再次重新提交表单,除非重新加载页面。 当表单包含错误时,Ninja 表单会阻止表单提交,因此您需要找到一种方法来清除/删除此错误。 很少有解决方法可以解决此问题。
一种简单的方法是,您可以使用以下代码以不同方式缓存响应错误:
$data['errors']['last']['message'] = $this->submit_response->result[0]->error;
使用此代码,您的表单将不会显示 API 响应的错误消息,但用户可以再次重新提交表单,您可以使用下面的 javascript 代码将错误显示到某些 html 元素
var customFormController = Marionette.Object.extend(
initialize: function()
// Listen to submit respond
this.listenTo(nfRadio.channel( 'forms' ), 'submit:response', this.checkSubmitRespond);
,
checkSubmitRespond: function(response, textStatus, jqXHR, formID)
if ('undefined' != typeof response.errors.last)
var msg = response.errors.last.message;
// display error on some pre-defined element
jQuery('.error-container').html(msg);
);
jQuery(document).ready(function($)
new customFormController();
);
希望对您有所帮助。
【讨论】:
以上是关于如果 Webhooks 响应错误,则停止 Ninja Forms 的进度的主要内容,如果未能解决你的问题,请参考以下文章
此页面上的脚本造成Web浏览器运行速度减慢。如果继续运行,您的计算机将可能停止响应。
我们如何使用 Lyft Webhooks 获取司机行程状态?
Stripe Webhooks - 我可以发送 200 以外的响应代码吗?
如果来自守护进程的错误响应是:Cannot Kill Container [...] 权限被拒绝,如何停止运行容器?