我使用jQuery的dataType 'jsonp'从API获取JSON字符串,但操作失败,因为返回的obj包含带有冒号':'的字符串。
在这里找到小提琴:http://jsfiddle.net/ezmilhouse/vZjV4/1/
var url = 'http://api.spreadshirt.com/api/v1/shops/329852/articles?fullData=true&locale=us_US&offset=0&attributeSet=staticShop&mediaType=jsonp';
$.ajax({
cache: false,
callback: "callback",
dataType: 'jsonp',
pageCache: false,
url: url,
callbackParameter: "callback",
success: function(data, status, jqXHR) {
console.log(data);
}});
返回的obj如下所示,它是有效的JSON(使用www.example.com测试jsonlint.com):
{"articles": [
{
"name": "Honoring Generations of Mothers - Youth TShirt",
"description": "t-shirt for women, Brand: ALO"
}
]}
但是jQuery会抛出一个
unterminated string literal
错误,因为它不喜欢'Brand'后面的冒号
"description": "t-shirt for women, Brand: ALO" // colon causes error
冒号是否需要转义才能与jQuery的jsonp一起使用?有什么解决办法吗?
thx
1条答案
按热度按时间w6lpcovy1#
我得到了你的异常,但原因不是冒号,你的jsonp响应是畸形的(它很大,大约38k个字符,在我看来它被限制在64k或类似的东西,所以它是失踪的结束)。
它的结尾是:
"size":{"id":"2"},"
结尾处的"是未终止的字符串文本
如果您将其关闭(即
"size":{"id":"2"}}]};
),那么浏览器将能够解析该jsonp。我可以从chrome得到完整的响应,但它的开发工具只显示了一部分,我错了。将在IE中检查它。
如果你在IE开发者工具中检查你的响应,你会发现你在jsonp中有两次换行符,每次都在
Brand: American Apparel
之后,所以它打断了字符串,js不能解析jsonp。