2013-02-06 106 views
2
addToBasket = (id, qty) -> 
    if $.cookie('basket')? 
     # Basket exists 
     basket = $.parseJSON($.cookie('basket')) 
     basket.push({ 'id': id, 'qty': qty }) 
     $.cookie('basket', JSON.stringify(basket)) 
    else 
     # Basket doesn't exist 
     alert 'Creating basket' 
     basket = JSON.parse([{'id': id, 'qty': qty}]) 
     $.cookie('basket', JSON.stringify(basket)) 

我正在撕裂我的頭髮;我無法得到(編譯的等價)函數運行,總是得到非法的令牌錯誤。我檢查過流氓無形的角色,除此之外,除了CR/LF之外沒有其他任何東西。意外的令牌非法..地方

+0

您確定樣本第2行的問號是否正確?我不是咖啡專業人員,但在文檔中找不到關於問號的任何內容:http://coffeescript.org/#conditionals – Spontifixus

+0

@Spontifixus是的,它在該頁面上被列爲「存在操作符」。我最初嘗試了沼氣標準「isnt undefined」,沒有任何區別;該?只是一個整理。 – user1381745

+0

好吧...其餘代碼看起來不錯。不過你可以解析'$ .cookie('basket')。 JSON解析器扼流圈上的「籃子」中是否有任何內容? – Spontifixus

回答

1

你對一個數組調用JSON.parse,由於瀏覽器實現它的方式,該數組明顯有資格作爲語法錯誤而不是正常的異常。你基本上這樣做:

JSON.parse([{id: 123}].toString()) 

這是一樣的:

JSON.parse('[object Object]') 

這是非法的JSON,因此錯誤。