问题描述
使用 Loqate Address Verification service,有没有办法在控件加载时以编程方式检测您的帐户是否信用不足?类似于下面的代码(我刚刚编写的)?
var controlToReturn = new pca.Address(fields,avOptions);
control.listen("load",function () {
if (this.accountCredit == 0) {
//do stuff
}
});
在您使用该控件后,可以处理该控件抛出的零信用错误,但此时您已经显示了一个地址搜索字段,然后必须将其隐藏,并退回到标准地址表单布局(至少在我们的例子中是这样)。
controlToReturn.listen("error",function (message) {
console.error(message);
const ERROR_MESSAGE_ZERO_CREDIT = "Account out of credit";
if (message != ERROR_MESSAGE_ZERO_CREDIT)
alert("Error with address checker service: " + message);
}
似乎没有任何 in their docs,但我只是想知道是否有人知道控件/其他 API 调用上的任何属性允许这样做?
解决方法
问题在于调用其 API 的 Loqate address.js 库没有返回整个错误对象,而只是返回消息。
这可能不是 Loqate 认可的方法,但您可以通过对 'error' 侦听器中的 pca.Address 的引用来访问原始错误对象。
您应该能够做到这一点(在“错误”侦听器函数中):
var errorCode = this.error.arguments[1].response.Items[0].Error;
'arguments[1]' 是导致错误的 pca.Request 对象,'Items[0]' 是错误对象,它具有属性 'Error'(代码)、'Description'、'Cause ' 和 '分辨率'。
请注意,此时 'errorCode' 是一个字符串,因此您可能还想对它使用 parseInt。
错误代码的完整列表可在 Loqate website 上找到。 “帐户余额不足”为“3”,但您可能希望以不同方式处理许多其他错误。