Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中捕获异步调用错误?_Javascript_Grails_Authorize.net_Accept.js - Fatal编程技术网

如何在javascript中捕获异步调用错误?

如何在javascript中捕获异步调用错误?,javascript,grails,authorize.net,accept.js,Javascript,Grails,Authorize.net,Accept.js,我正在我的应用程序中集成accept.js 这不是一个特别的整合问题。这是我试图解决的JavaScript问题 在本教程之后,单击表单提交时会调用一个函数。此函数负责打包信用卡信息并将其异步发送到authorize.net服务器 <script type="text/javascript"> function sendPaymentDataToAnet() { var authData = {}; authData.clientKey = "YOUR PUB

我正在我的应用程序中集成accept.js

这不是一个特别的整合问题。这是我试图解决的JavaScript问题

在本教程之后,单击表单提交时会调用一个函数。此函数负责打包信用卡信息并将其异步发送到authorize.net服务器

<script type="text/javascript">
function sendPaymentDataToAnet() {
    var authData = {};
        authData.clientKey = "YOUR PUBLIC CLIENT KEY";
        authData.apiLoginID = "YOUR API LOGIN ID";
    var cardData = {};
        cardData.cardNumber = document.getElementById("cardNumber").value;
        cardData.month = document.getElementById("expMonth").value;
        cardData.year = document.getElementById("expYear").value;
        cardData.cardCode = document.getElementById("cardCode").value;


    var secureData = {};
        secureData.authData = authData;
        secureData.cardData = cardData;

        Accept.dispatchData(secureData, responseHandler);
}
</script>

函数sendPaymentDataToAnet(){
var authData={};
authData.clientKey=“您的公共客户端密钥”;
authData.apiLoginID=“您的API登录ID”;
var cardData={};
cardData.cardNumber=document.getElementById(“cardNumber”).value;
cardData.month=document.getElementById(“expMonth”).value;
cardData.year=document.getElementById(“expYear”).value;
cardData.cardCode=document.getElementById(“cardCode”).value;
var secureData={};
secureData.authData=authData;
secureData.cardData=cardData;
接受、发送数据(secureData、responseHandler);
}
问题是Accept.dispatchData()似乎是一个异步调用。如果在单击submit之前断开网络连接,则Accept.dispatchData将无法连接到外部服务

它将抛出以下错误

我的目标是抓住这个错误。我已尝试在try-catch块中包装Accept.dispatchData,但它似乎没有捕获抛出的错误。似乎错误就在它的某个地方。如何检测INTERNET断开连接错误?谢谢

可用于检测
窗口
错误

可用于检测
互联网连接

//窗口:打开时出错
window.onerror=(错误)=>console.log('navigator.onLine:',navigator.onLine)
//扳机。

const trigger=error
这是网络连接问题,如果您的网络关闭,则每个javascript/jquery插件甚至Google/Facebook站点都会抛出此异常。但是您可以在调用api之前检查您的网络,如下所示

if(navigator.onLine){
 //do your stuff
}else{
 alert("Please, check your network connection")
}
使用
.catch()


我试过了,但失败了。它表示无法读取未定义的“then”属性。Accept.dispatchData()似乎返回undefined。这将引发“ReferenceError:未定义错误”
Accept.dispatchData()
   .then(() => {})
   .catch( error => console.log(error))