如何在 jQuery ajax 调用中将 JSON 响应解析为 JSONP?
Posted
技术标签:
【中文标题】如何在 jQuery ajax 调用中将 JSON 响应解析为 JSONP?【英文标题】:How to parse a JSON response as JSONP on a jQuery ajax call? 【发布时间】:2017-03-10 23:26:55 【问题描述】:我正在处理 todoist API (https://developer.todoist.com/),我正在使用 jquery ajax 获取一些数据的请求:
var url = "https://todoist.com/API/v7/sync";
var data =
'token' : token,
'resource_types' : '["all"]',
;
$.ajax(
url: url,
data: data,
type: 'GET',
dataType: 'jsonp',
success: function(response)
console.log(response);
,
error: function(response)
console.log('error');
,
);
现在,当我得到响应时,我得到了错误
Unexpected token :
为什么?因为根据 (https://***.com/a/7941973/2724978) jQuery 期望一个 jsonp 格式的响应,但它返回 json。
我已经研究过如何解决这个问题,得到的回应是:“以 jsonp 格式返回数据”......好吧。这是一个外部 API,它们不提供 JSONP 格式的数据。有没有办法可以覆盖返回的函数并解析这个 JSON 数据?
【问题讨论】:
是否定义了token
?链接文档建议使用POST
request “同步 API 请求应在 HTTP POST (application/x-www-form-urlencoded) 中进行。同步 API 响应(包括错误)将以 JSON 格式返回。”我>?
定义好了,是的
【参考方案1】:
您的数据类型应该是json
,而不是jsonp
。
【讨论】:
似乎正确。我自己测试了一下...谢谢!【参考方案2】:正如 elektronik 指出的那样,dataType 应该是 json
而不是 jsonp
。代码如下所示...
var token = "your token"
var url = "https://todoist.com/API/v7/sync";
var data =
'token' : token,
'resource_types' : '["all"]',
;
jQuery.ajax(
url: url,
data: data,
type: 'GET',
dataType: 'json',
success: function(response)
console.log(response);
,
error: function(response)
console.log('error');
,
);
【讨论】:
以上是关于如何在 jQuery ajax 调用中将 JSON 响应解析为 JSONP?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Json 数据作为参数进行 Jquery Ajax 调用?