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 的基于网络的操作。您能否详细说明您遇到的问题是什么以及您尝试了什么?请发布您的NSURLRequestNSURLSession 代码。 显然,这是一个 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 响应的主要内容,如果未能解决你的问题,请参考以下文章

AudioUnit Render 回调中的 Objective-C/Swift 用法

Objective-C 回调处理程序 [关闭]

jQuery跨域ajax:执行时回调

未调用 Cordova 插件回调 (iOS)

如何在 Objective-C 中执行回调

细数Objective-C中的回调机制