我有一个网站,是用 Gatsby 创建的。其中一个页面上有一个表单,它需要发布到一个不支持 CORS 但支持 JSONP 的端点。
我已经使用jsonp编写了这样的事件处理程序:
const handleSumbit = async event => {
event.preventDefault()
jsonp(
"https://go.pardot.com/form/id/code/",
{
timeout: 10000,
params: {
firstname: "fname",
lastname: "lname",
email: "an@email.com",
company: "company",
},
},
(err, data) => {
console.log({ err }, { data })
}
)
}
基于这篇文章,我在我的网站上创建了 2 个静态文件,名为error.json和success.json。我已经尝试过这样的内容:
cb({"status":"succcess"})
并且只是
{"status":"success"}
我总是在控制台中收到一个错误,说请求超时,如果我将结果包装在jsonpCb()我也会得到一个说Uncaught ReferenceError: jsonpCb is not defined. 我认为它工作了一半,因为它正在尝试运行该功能,并且正在保存表单数据。在我的 React 组件中,我创建了一个名为 jsonpCb 的函数,它就是这样:
const jsonpCb = data => {
console.log("fromJsonCb", { data })
}
但我觉得由于 React 打包的方式,这对结果是不可用的。
任何人都知道我如何实际获得 JSONP 调用返回的结果?