我正在尝试构建一个移动应用程序,该应用程序将获取从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移到另一个域并进行测试时,它就不再起作用了。我补充道?callback=?到url的末尾,正如我在各种教程中所读到的,但它没有加载任何内容。将一行更改为:
$.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> )
例如,回调({名称:"琼斯",职位:"军官"})
如果服务刚刚返回,客户端将以静默方式失败。
我怀疑您的服务不符合JSONP,请重写它以处理本地(JSON)和远程(JSONP)调用。