从 Sveltekit 操作返回的 json 是乱码。我期待这样的事情:
{ foo: bar, foo2: bar2 }
Run Code Online (Sandbox Code Playgroud)
但我得到的是这个:
Array({ foo: 1, foo2: 2 }, bar, bar2)
Run Code Online (Sandbox Code Playgroud)
对于嵌套数据来说,这更令人烦恼。
这就是我发送的方式:
const response = await fetch('/api/fetch', {
method: 'POST'
}).then((res) => {
res.json().then((r) => {
console.log(JSON.parse(r.data))
})
})
Run Code Online (Sandbox Code Playgroud)
这是api/fetch/+page.server.js
export const actions = {
default: async ({ request }) => {
const response = await fetch(
'https://exterual-url-that-returns-json', {
method: 'GET'
}
)
return await response.json()
}
}
Run Code Online (Sandbox Code Playgroud)
即使 json 对象不是从外部 url 获取的,我也有同样的问题,即return { foo: bar, foo2: bar2 }
JSON 不是乱码,而是序列化的,devalue它比普通的限制更少JSON.stringify,例如它保留了Date,Set和Map对象。
JSON 应该由 SvelteKit 代码使用,它应该自动正确转换它。操作应该与<form>元素一起使用,并将结果传递到属性中的页面form;要异步处理请求,请使用enhance操作。
如果由于某种原因您必须手动处理数据,请使用 deserializefrom $app/forms。
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |