2011-11-08 73 views
2

我使用jQuery的dataType'jsonp'從API抓取JSON字符串。操作失敗,因爲返回的obj包含其中含有':'冒號的字符串。jQuery:由於包含冒號的字符串,jsonp失敗

查找小提琴這裏: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(與jsonlint.com測試):

{"articles": [ 
    { 
     "name": "Honoring Generations of Mothers - Youth TShirt", 
     "description": "t-shirt for women, Brand: ALO" 
    } 
]} 

但jQuery的拋出一個

unterminated string literal 

錯誤,因爲它不像冒牌'冒牌'

"description": "t-shirt for women, Brand: ALO" // colon causes error 

冒號是否需要轉義才能使用jQuery的jsonp? 任何解決方法?

THX

+0

理論上它們不應該被轉義,因爲json將描述值視爲一個字符串,但是如果它有幫助,請嘗試並轉義它或使用更好的json encode/decode-r – Val

+0

http:// json。 parser.online.fr/給我沒有錯誤... –

回答

2

我收到了你的例外,但理由不是結腸癌,你JSONP響應的格式不正確(這是非常大的,大約38K字符,在我看來,它僅限於64K或類似的東西,所以它缺少結尾)。

它與結束:在結束"size":{"id":"2"},"

「是未結束的字符串常量

如果你想關閉它(即"size":{"id":"2"}}]};)只有這樣瀏覽器就能夠解析JSONP

編輯

我可以從鉻得到完整的迴應,但它的開發工具只顯示它的一部分,我錯了,將在IE中檢查它

EDIT2

如果您檢查在IE開發者工具的反應,你會看到你在JSONP有換行符兩次,每次Brand: American Apparel後,因此它打破了串和js無法解析JSONP。

+0

我猜json對象是有點大(jquery)的大(大小)...我已經搜索了文件'$ .ajax'及其設置,但沒有沒有找到任何相應的... –

+0

你是什麼意思'新行兩次'? – ezmilhouse

+0

在jsonp響應中的兩個地方:第一次在char 81633上的'American Apparel'之後,第二次在char 90656上的'American Apparel'之後。刪除(轉換爲\ r \ n)並重試。 –

相關問題