请原谅我的天真,但我是一个进入现代时代的老开发人员。简而言之,我有一个用 ASP 编程的旧网站(我知道,我知道),需要使用 Square Checkout API 进行非常简单的付款处理。因此,我需要向 Square 发送 JSON 请求并处理其响应。我使用 Javascript 创建了一个非常非常精简的 JSON 请求,将其发送到 Square 以进行测试,但似乎无法处理响应“null”。我无法判断我是否只是没有得到响应和/或我的代码在接收 JSON 返回时是否不正确。就目前情况而言,我只是尝试接收响应并将其打印到屏幕上,然后添加代码来解析它,然后根据 API 文档重定向回 Square。我做错了什么??
[请注意,我之前已将 onload 参数包装到 request.response 但它没有触发。]
我的代码如下。任何和所有的帮助将由衷感谢!
谢谢你, -乔
<html>
<script>
var obj = {
"idempotency_key": "00000000c",
"order":
{
"reference_id": "00000000c",
"line_items":
[{
"name": "My order",
"quantity": "1",
"base_price_money":
{
"amount": 15,
"currency": "USD"
}
}],
"taxes":
[{
"name": "Sales Tax",
"percentage": "8.5"
}]
},
"ask_for_shipping_address": false,
"merchant_support_email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6b0804050d1e180e0f2b0612041c05180a061b070e18021f0e45080406" rel="noreferrer noopener nofollow">[email protected]</a>",
"redirect_url": "https://www.myownsamplesite.com/success.asp"
}
var myJSON = JSON.stringify(obj);
var request = new XMLHttpRequest();
request.open('POST', 'https://connect.squareup.com/v2/locations/{location_ID_removed_for_security}/checkouts', true);
request.setRequestHeader('Authorization', '{auth_token_removed_for_security}');
request.setRequestHeader('Accept','application/json');
request.setRequestHeader('Content-Type','application/json');
request.responseType = "json";
request.send(myJSON);
var returnJSON = request.response;
document.write(returnJSON);
</script>
</html>
最佳答案
您正在使用异步请求
request.open('POST', URL, true); // <- true means asynchronous
对于异步请求,您还应该定义
req.onreadystatechange = function () {
if (req.readyState == 4) {
if(req.status == 200)
console.log(req.responseText);
else
console.log("Error loading page\n");
}
};
document.write 只能在加载 html 时执行输出。 所以有可能你的请求是可以的,但是你看不到。
您也可以尝试(仅用于调试)同步请求
request.open('POST', URL, false);
和 console.log 以查看浏览器控制台中的输出,或者 使用这个代替 document.write
document.body.innerHTML += returnJSON
关于javascript - 将旧网站与 Square Checkout API 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025799/