jQuery:jsonp失败,因为字符串包含冒号

cdmah0mi  于 2023-01-25  发布在  jQuery
关注(0)|答案(1)|浏览(211)

我使用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

w6lpcovy

w6lpcovy1#

我得到了你的异常,但原因不是冒号,你的jsonp响应是畸形的(它很大,大约38k个字符,在我看来它被限制在64k或类似的东西,所以它是失踪的结束)。
它的结尾是:"size":{"id":"2"},"
结尾处的"是未终止的字符串文本
如果您将其关闭(即"size":{"id":"2"}}]};),那么浏览器将能够解析该jsonp。

    • 编辑**

我可以从chrome得到完整的响应,但它的开发工具只显示了一部分,我错了。将在IE中检查它。

    • 编辑2**

如果你在IE开发者工具中检查你的响应,你会发现你在jsonp中有两次换行符,每次都在Brand: American Apparel之后,所以它打断了字符串,js不能解析jsonp。

相关问题