4

我有一个使用 Jquery Mobile 制作移动 Web 应用程序的项目。我希望我的应用程序将使用来自跨域 REST Web 服务的数据。很多人说用JSONP。但我仍然对如何使用它以及如何构建支持 JSONP 输出的 REST Web 服务感到困惑。任何人都可以帮助我讲述或说明 JSONP 的工作吗?或者有人有这个案例的示例代码吗?之前谢谢。

4

2 回答 2

2

JSONP 是客户端请求,而 REST 服务将是服务器端请求(仅当您尝试跨域 api 服务时)。两者在工艺上是不同的。

JSONP:

您可以使用 javascript 或使用 jquery ajax 方法来实现 JSONP。用 jquery 实现是最简单的方法。JSONP 是一种在 html 文档中动态包含 javascript 脚本的类型。所以你可以动态调用js函数。

JSONP 实现有很多可用的资源。我参考下面的一个,

检查这个以获取 JSONP 实现

下面是一个简单的 jquery ajax 函数,它触发 jsonp 请求到 logitude 和 latitude。

$.ajax({
        type: "GET",
        dataType: "jsonp",
        cache: false,
        url: 'http://api.ipinfodb.com/v3/ip-city/?key=b518527dd751af36c974e0adcdc4cb329917df46c006a72bf92858dd7c059488&ip=<?=$client_ip?>&format=json',
        success: function(data) {           
            alert(data.latitude+":"+data.longitude)                             
        },
        error: function(){
            alert('Could not able to find location!');
        }
    });

查看这篇文章以了解 REST 实现

我希望这能帮到您。

于 2013-01-30T06:31:03.623 回答
0

关于什么构成 RESTful Web 服务并没有全面的协议。定义可能包括以下分类: - 反映对象模型的 API url 路径,例如user/43/comment/?datetime=01022013 - 反映更改性质的 HTTP 动词,例如GET不应写入数据等 - HTTP 响应代码映射到响应状态,例如200 OK仅在没有错误时返回。

JSONP 是一种跨域请求的方法,不会在浏览器上遇到 CORS 安全问题。虽然 JS 框架可能会从您身上抽象出现实,但 JSONP 在幕后将<script>标签插入到页面的 DOM 中。JSONP url 标准包含一个查询参数callback=<<nameForCallback>>. 响应采用 javascript 格式,格式如下:nameForCallback({ error: false, myData: "banana"});

JSONP 始终GET用作其 HTTP 动词。API 应该总是返回2XX状态码,即使在发生错误的情况下,因为浏览器将忽略响应负载(否则它们将无法被您的 javascript 代码访问)。

这些事实排除了许多被视为 RESTful 服务一部分的 API 设计方面。如果您绝对必须使用 JSONP(无法解决 CORS 问题),您仍然可以在 API 设计中加入一些有益的(对于可读性/可维护性)RESTful 品质,例如反映您的数据模型的路径路由等。

于 2019-01-18T17:37:22.867 回答