【发布时间】:2020-09-07 05:56:38
【问题描述】:
我不明白在提交付款表单后,下面的 responseHandler 函数如何接收来自 API 调用的响应。以下是代码的简要总结:
var PaymentThing = function(e) {
this["clientCallback"] = e;
return {
createToken: function() {
// HTTP GET URL is generated and then an HTML script element is appended to the page head
var a = "https://example.com/securitytoken?creditcard=xxxx?callback=PaymentThing.callback";
var f = document.createElement("script");
f.src = a;
document.getElementsByTagName("head")[0].appendChild(f)
},
callback: function(e) {
this["clientCallback"](e.status, e.results)
}
}
}
var responseHandler = function(status, response) {
// How does this even work?
console.log(response, status);
}
// Form Submission
jQuery('#checkout_payment_form').submit(function() {
PaymentThing.createToken(responseHandler);
}
所以我的问题是,responseHandler 函数如何接收来自 HTTP GET 调用的响应?在我看来,甚至没有进行 HTTP 调用。我只看到一个 URL 被添加到一个 HTML 脚本元素(使用 createToken 函数),该 URL 甚至从未被调用/执行(但不知何故它是?)。另外,当我没有看到它们被传递到 responseHandler 函数调用时,(状态、响应)参数是如何传递到 responseHandler 函数的?
我不明白这里的逻辑或操作顺序,谁能解释一下这是怎么回事?
编辑: 好的,我想我现在看到了 responseHandler 函数是如何接收状态和响应参数的。我编辑了上面的代码以显示生成的 HTTP url 中有一个回调函数。但是,该 URL 是如何被调用的?在我看来它仍然是惰性的,并且被卡在页面的 HTML 中并且没有激活。
【问题讨论】:
-
您确定此代码有效 有效吗?这个 sn-p 有很多问题。
-
我认为您可能在这里遗漏了一些代码。也许
f.onload = arguments[0]或类似的东西? -
这里缺少一些东西。 PaymentThing.createToken(...) 也会出错
标签: javascript function logic