我正在尝试构建一个移动应用程序,它将抓取将从 mysql 数据库的 php 查询输出的 json 数据。这是我第一次这样做,所以只是尝试一个简单的例子来让事情发挥作用。在同一域上时,一切似乎都很好,但我在使用 json-p 进行跨域获取时遇到问题。相同的域代码是:
<html>
<head>
<title>the title</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$.getJSON('example.json', function(staff) {
document.write(staff.name);
});
});
</script>
</head>
<body>
</body>
</html>
效果很好,但是当我将 example.json 移动到另一个域并测试时,它不再起作用。我添加了?回调=?正如我在各种教程中读到的那样,到网址的末尾,但它没有加载任何内容。将一行更改为:
$.getJSON('http://www.knoxyouthgroup.org/example.json?callback=?', function(staff) {
不知道该去哪里,有点碰壁了。很抱歉提出这个新手问题,但如果有任何帮助,我们将不胜感激!
我们的最终目标是根据我们托管的 json 数据构建移动应用程序。数据非常简单且最少,您可以自己托管吗?我一直在阅读有关 REST 服务等的内容,但不确定这是否只是我可以为其编写 php 脚本并将其转储到 json 并收工的东西?
谢谢大家!
最佳答案
JSONP 的工作方式与普通 JSON 不同,客户端和服务都必须遵守其工作规则:
客户端 使用 JQuery.getJSON,指定“callback=?”通知 JQuery 您正在执行 JSONP 调用。请参阅http://api.jquery.com/jQuery.getJSON/
服务 服务必须通过使用回调函数包装响应 JSON 来正确处理 JSONP 调用。它应该返回以下格式的响应:
<callback-function> ( <JSON-payload> )
例如,callback({name:"JONES",position: "Officer"})
如果服务刚刚返回,则客户端会默默地失败。
我怀疑您的服务不符合 JSONP,请重写它以处理本地(JSON)和远程(JSONP)调用。
关于javascript - 非常简单的 JSON-P 示例的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504892/