以下 GET 请求使用 jQuery 工作:
$.ajax({
url: "https://yoda.p.mashape.com/yoda?sentence="+phrase,
headers: {"X-Mashape-Key": "superSecretKey", "Accept": "text/plain"},
success: function(data) {
console.log(data);
},
error: function(data) {
console.log(data);
}
})
但随后使用 Mithril 进行的改编将不起作用:
Yoda.submit = function (phrase) {
console.log(phrase);
return m.request({
method: 'GET',
url: "https://yoda.p.mashape.com/yoda?sentence=" + phrase,
headers: {"X-Mashape-Key": "superSecretKey",
"Accept": "text/plain"}
});
}
在查阅https://lhorie.github.io/mithril/mithril.request.html上的文档并搜索类似示例后,我尝试了不同的变体。我正在考虑使用 3rd 方库,但我想我会在这里尝试,然后再深入兔子洞。当我尝试发出 AJAX 请求时收到的错误消息是我丢失了 API 密钥,即使它就在那里。
更新:
从那以后,我了解到,除了下面标记的答案之外,Mithril 会自动将 API 响应解析为 JSON。由于我从这个 API 得到一个字符串响应,我必须在我的m.request
对象中包含以下条目:
deserialize: function(value) {return value;}
反序列化告诉 Mithril 按原样返回响应值,而不是 JSON。