【发布时间】:2016-05-30 15:45:23
【问题描述】:
我尝试了这个源的几种组合,但我是 jQuery 新手,我找不到我能理解的基本教程。
<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
</head>
<body>
<script>
var sourceText = "car";
var transText = "";
$.getJSON("http://www.worldlingo.com/S000.1/api?wl_password=secret&wl_srclang=EN&wl_trglang=IT&wl_text=" + sourceText,
function(data){
alert("Data: " + data);
}).error(function(jqXHR, textStatus, errorThrown){
console.log("ERR: %o" , jqXHR);
console.log("Result: %s" , jqXHR.responseText);
transText=jqXHR.responseText;
alert("Translation JSON data provided for '" + sourceText + "': '" + transText + "'");
})
</script>
</body>
</html>
我只想得到一个单词的翻译。
为什么我得到的翻译是错误而不是结果?
如果实际成功接收到数据,为什么执行永远不会到达警报(数据)?
编辑: 最终答案是:服务器没有提供 JSON 响应,因此上面的源工作正常,由于收到错误的 MIME 类型而触发错误。
【问题讨论】:
-
如果您看到浏览器控制台,您应该会看到一些错误,例如
XMLHttpRequest cannot load http://www.worldlingo.com/S000.1/api?wl_password=secret&wl_srclang=EN&wl_trglang=IT&wl_text=car. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '....' is therefore not allowed access. -
你问题的标题其实和你的问题无关。请解决这个问题。
-
@Arun P Johny :我没有看到任何错误......这就是重点!确实,脚本成功地从服务器获取了结果!我还尝试注释掉“.error”部分:Chrome 控制台中仍然没有错误。
-
我在 FireFox 中收到此错误:跨源请求被阻止:同源策略不允许读取位于 worldlingo.com/S000.1/… 的远程资源。这可以通过将资源移动到同一个域或启用 CORS 来解决 所以我应该启用这个“CORS”......怎么样?!?为什么 chrome 不抱怨它并实际接收数据但触发错误,就像它没有一样?
-
解决方案:我使用的服务器没有提供 JSON 格式的数据!出于未知的原因(例如,我正在寻找提供 JSON 格式翻译的服务器......)我认为它确实做到了!