javascript - 非常简单的 JSON-P 示例的问题

标签 javascript json jquery-mobile cross-domain jsonp

我正在尝试构建一个移动应用程序,它将抓取将从 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 不同,客户端和服务都必须遵守其工作规则:

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

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

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

例如,callback({name:"JONES",position: "Officer"})

如果服务刚刚返回,则客户端会默默地失败。

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

关于javascript - 非常简单的 JSON-P 示例的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504892/

相关文章:

jquery - .hide() 方法不起作用

jquery-mobile - "Masterpage"- 在 PhoneGap 应用程序中使用 jQuery Mobile 进行布局

javascript - 根据条件加载两个不同的json

javascript - 将 html 标签添加到文本区域中选定的文本。为什么 "if(' SelectionStart' in textarea)"需要在那里?

javascript - 即时重新填充 HTML 表格

javascript - Lodash 发现 JSON 数组之间的差异

jquery - Angular JS : html table columns ordering not working

javascript - ajax json php 回调丢失的 css jquery 移动

javascript - 在将文件上传到 S3 之前重命名文件

javascript - 两个数字不等于,但它们具有相同的类型和值