JSON-P 回调函数是不是应该接受字符串?
Posted
技术标签:
【中文标题】JSON-P 回调函数是不是应该接受字符串?【英文标题】:Should a JSON-P callback function accept a string?JSON-P 回调函数是否应该接受字符串? 【发布时间】:2012-01-16 10:33:04 【问题描述】:我正在调用其他人创建的 REST API。支持JSONP,方便跨域访问。
我从服务返回的响应如下:
mycallback('"token": "123456789"');
注意包裹 JSON 数据的单引号;将其作为字符串而不是原始对象传递。 JQuery 可以处理这个问题,但其他库似乎需要一个原始对象。
mycallback("token": "123456789");
原始对象参数对我来说更有意义,因为它避免了解析 JSON 数据的需要,但在要求 API 的维护者进行调整之前,我想确定一下:
哪个最正确?
【问题讨论】:
【参考方案1】:将 javascript 文字(第二个)作为 shown here 传递更正确,因为它可以避免将字符串反序列化回 javascript 对象。
【讨论】:
【参考方案2】:传递字符串显然是一件坏事——你有两个选择(首选#1):
-
要求 JSONP 服务的开发人员发送正确的 JSONp 而不是字符串
使您的回调函数更智能,以便在
payload
是字符串的情况下使用payload = JSON.parse(payload);
之类的内容。
【讨论】:
我在我使用的框架中使用内置的 JSON-P 处理,所以 #2 是不可能的/不实用的。以上是关于JSON-P 回调函数是不是应该接受字符串?的主要内容,如果未能解决你的问题,请参考以下文章
Asp.Net MVC 的ContentResult 返回字符串,jquery.post的回调函数不接受,为啥?
如何在返回其回调之一结果的函数的 Typescript 中声明类型?