我有一个付款页面,它首先执行axios调用以获取所需的HPP模型数据。然后我调用Hpp函数打开托管页面,但需要单击2次才能完成操作。我尝试过直接从hpp函数中放入代码,但也发生了同样的情况。感谢您的帮助。
paymentFunction(){
const data = {
//my passed data
};
const response = axios ({
url: "Myserverapitogetmodeldata",
data: data,
method: "POST"
})
//open the hosted page
this.hppFunction(response.data.id);
}
hppFunction(i) {
$.getJSON("serverapimodeldata" + i, function (
jsonFromRequestEndpoint
) {
debugger;
window.RealexHpp.setHppUrl("realexpaymentsapi");
window.RealexHpp.lightbox.init(
"payButtonId",
"responseUrl",
jsonFromRequestEndpoint
);
});
}
<MDBBtn id="payButtonId" onClick={() =>this.paymentFunction()}>Pay Now</MDBBtn>
如果我用onClick={this.paymentFunction((}调用初始函数,这是有效的,但它是用onchange向Db发布,并在每次输入字符时发布
看起来像
window.RealexHpp.lightbox.init(
"payButtonId",
"responseUrl",
jsonFromRequestEndpoint
);
应在单击按钮之前调用,因为它设置了按钮。此时,您的第一次点击正在设置按钮,而您的第二次点击正在执行付款。
请参阅此示例,其中在页面加载时调用RealexHpp.lightbox.init
方法。
编辑:您的axios呼叫也没有等待响应,它只是继续。你可以试试:
axios({
url: "Myserverapitogetmodeldata",
data: data,
method: "POST"
})
.then(response => {
//open the hosted page
this.hppFunction(response.data.id);
});
看看它是否能解决你的问题。