Objective-C:来自 jquery 回调的 json 响应
Posted
技术标签:
【中文标题】Objective-C:来自 jquery 回调的 json 响应【英文标题】:Objective-C: json response from jquery callback 【发布时间】:2014-01-10 22:47:22 【问题描述】:我正在构建 ios 应用程序和 试图从类似于以下的 url 获取 json 数据:
example.com/ajax/u.php?callback=jQuery84054761566_1389381628746
有人熟悉这些类型的回调吗?
obj-c 中的典型 HTTP 请求返回 200 状态和带有此 url 的空响应对象。
【问题讨论】:
我们中的许多人都熟悉检索 JSON 的基于网络的操作。您能否详细说明您遇到的问题是什么以及您尝试了什么?请发布您的NSURLRequest
或NSURLSession
代码。
显然,这是一个 JSONP url。您可能想要删除开始的 jQuery84054761566_1389381628746( 和结束的 ),然后进行 JSON 解析
我会首先确保您点击正确的 URL 并获得您期望的响应。在为 iOS 编码之前使用curl
。
【参考方案1】:
这是一个用于……嗯,JSONP 的 JSONP 回调。 JSONP 用于网页以避免“同源”限制。也就是说,从某个域(例如 abc.com)加载的网页无法调用/访问单独域(例如 xyz.com)上的资源。
他们(Web 前端开发人员)解决此问题的方法是使用不受此限制的<script>
标签。然而,<script>
标签的返回只会被解析——为了让它执行某些东西,你告诉它一个存在于你的 javascript 代码中的函数名,在这种情况下,jQuery84054761566_1389381628746
。
所以不是返回一个常规的 JavaScript 对象,而是说
key : 'value'
然后服务器返回一个函数调用
jQuery84054761566_1389381628746(key : 'value')
在你的网页 JavaScript 中,jQuery84054761566_1389381628746
的函数定义做了一些事情:
jQuery84054761566_1389381628746 = function(data)
alert(data.key);
;
iOS 没有这种同源/跨站点限制,因此您不需要 JSONP - 您可以调用任何您想要的服务器。
【讨论】:
以上是关于Objective-C:来自 jquery 回调的 json 响应的主要内容,如果未能解决你的问题,请参考以下文章