1

我正在尝试构建一个移动应用程序,它将获取 json 数据,这些数据将从 mysql 数据库的 php 查询中输出。这是我第一次这样做,所以只是尝试一个简单的例子来让事情正常工作。在同一个域上一切似乎都很好,但我在让 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 并称之为一天的东西?

谢谢大家!

4

1 回答 1

0

JSONP 的工作方式与普通 JSON 不同,客户端和服务都必须遵守规则才能工作:

  1. 客户端使用 JQuery.getJSON,指定“callback=?” 通知 JQuery 您正在执行 JSONP 调用。请参阅http://api.jquery.com/jQuery.getJSON/

  2. 服务服务必须通过使用回调函数包装响应 JSON 来正确处理 JSONP 调用。它应该以以下格式返回响应:

      <callback-function> ( <JSON-payload> )
    

例如,回调({name:“JONES”,position:“Officer”})

如果服务只是返回,客户端会静默失败。

我怀疑你的服务不符合 JSONP,重写它来处理本地(JSON)和远程(JSONP)调用。

于 2012-12-10T00:12:38.090 回答