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 中声明类型?

满足条件时是不是可以在 GLSL 着色器中回调 C/C++ 函数/代码? [关闭]

js判定是不是传入回调函数

这种优化有名称吗?

数组迭代