gpt4 book ai didi

javascript - 未捕获( promise )SyntaxError : Unexpected end of JSON input

转载 作者:搜寻专家 更新时间:2023-11-01 05:03:41 25 4
gpt4 key购买 nike

我正在尝试向我的服务器发送新的推送订阅,但遇到错误“Uncaught (in promise) SyntaxError: Unexpected end of JSON input”,控制台显示它在我的索引页面第 1 行,这显然是不是这样的。

我怀疑出现问题的函数(因为当我注释掉它时没有抛出错误)是 sendSubscriptionToBackEnd(subscription),它在下面被调用:

function updateSubscriptionOnServer(subscription) {
const subscriptionJson = document.querySelector('.js-subscription-json');
const subscriptionDetails = document.querySelector('.js-subscription-details');

if (subscription) {
subscriptionJson.textContent = JSON.stringify(subscription);
sendSubscriptionToBackEnd(subscription);
subscriptionDetails.classList.remove('is-invisible');
} else {
subscriptionDetails.classList.add('is-invisible');
}
}

函数本身(在上述函数之前):

 function sendSubscriptionToBackEnd(subscription) {
return fetch('/path/to/app/savesub.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(subscription)
})
.then(function(response) {
if (!response.ok) {
throw new Error('Bad status code from server.');
}

return response.json();
})
.then(function(responseData) {
if (!(responseData.data && responseData.data.success)) {
throw new Error('Bad response from server.');
}
});
}

我曾尝试在 fetch 调用中用双引号替换单引号,但结果相同。

我知道应该填充 JSON,因为它使用 subscriptionJson.textContent = JSON.stringify(subscription);updateSubscriptionOnServer() 函数中打印到屏幕上,我在 google codelab 的示例服务器中使用该输出成功接收了推送。

编辑:这是字符串形式的 JSON,但我没有看到语法错误:

{"endpoint":"https://fcm.googleapis.com/fcm/send/dLmthm1wZuc:APA91bGULRezL7SzZKywF2wiS50hXNaLqjJxJ869y8wiWLA3Y_1pHqTI458VIhJZkyOsRMO2xBS77erpmKUp-Tg0sMkYHkuUJCI8wEid1jMESeO2ExjNhNC9OS1DQT2j05BaRgckFbCN","keys":{"p256dh":"BBz2c7S5uiKR-SE2fYJrjPaxuAiFiLogxsJbl8S1A_fQrOEH4_LQjp8qocIxOFEicpcf4PHZksAtA8zKJG9pMzs=","auth":"VOHh5P-1ZTupRXTMs4VhlQ=="}}

有什么想法吗??

最佳答案

这可能是端点未在响应 header 中传递适当参数的问题。

在 Chrome 的控制台中,在“网络”选项卡内,检查端点发送的 header ,它应该包含以下内容: Example of proper response to allow requests from localhost and cross domains requests

要求 API 开发人员将其包含在 header 中:

"Access-Control-Allow-Origin" : "*", 
"Access-Control-Allow-Credentials" : true

关于javascript - 未捕获( promise )SyntaxError : Unexpected end of JSON input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43362431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com