2013-09-08 8 views
18

aşağıdaki satırı beklenmeyen belirteç:angularjs fromJson() kod

var sid = $cookieStore.get('PHPSESSID'); 

bu hatayı atıyor: Yani

SyntaxError: Unexpected token m 
at Object.parse (native) 
at Object.fromJson (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:779:14) 
at Object.angular.module.factory.factory.get (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-cookies.js:149:34) 
at Object.getAllImages (https://7-september.com/photoslide/js/services.js:29:36) 
at new Management (https://7-september.com/photoslide/js/controllers.js:54:18) 
at invoke (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:2902:28) 
at Object.instantiate (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:2914:23) 
at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:4805:24) 
at update (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:14198:26) 
at Object.$get.Scope.$broadcast (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:8307:28) 

, ben çizgi 779. de angularjs bir kesme noktası koymak kod vardır:

777 function fromJson(json) { 
778  return isString(json) 
779   ? JSON.parse(json) 
780   : json; 
781 } 

JSON.parse() geçirilen olarak json değeri "mnp801fap6kor50trgv4cgk7 olan m2" .

Ayrıca, bu yönteme geçilen diğer şeylerin, genellikle "" kullanıcıAdı "gibi etraflarında iki tırnak işareti olduğunu fark ettim.

Lütfen

Yardım edin. Kafamı bir kaç saatliğine vuruyorum. Ya da birisi php oturumunu tanıtmak için Açısal kullanarak tanımlama bilgilerinin daha iyi bir yolunu biliyorsa, bu da harika olur. (Evet, jQuery veya çıplak metal JS kullanarak yapabilirdim, ama Angular kullanmaya devam etmeyi tercih ederim).

Şimdiden teşekkürler!

cevap

23

$cookieStore'un $cookieStore tarafından oluşturulmamış çerezleri okuması gerektiği anlaşılmıyor. yorumların Gönderen:

* @description 
* Provides a key-value (string-object) storage, that is backed by session cookies. 
* Objects put or retrieved from this storage are automatically serialized or 
* deserialized by angular's toJson/fromJson. 

automatically serialized or deserialized önemli bir parçasıdır. Muhtemelen, bunun yerine $cookies kullanmak şöyle istiyorum http://jsfiddle.net/xtmrC/

: Ben burada sorunu yeniden başardı http://jsfiddle.net/MXTY4/9/

angular.module('myApp', ['ngCookies']); 
function CookieCtrl($scope, $cookies) { 
    console.log('haha', $cookies.PHPSESSID); 
} 
+1

Teşekkür boş dize alırsınız. Bu mesajı cevabımı aldıktan birkaç dakika sonra buldum, ama cevabım yeterince yüksek olmadığı için cevabı sekiz saat yayınlayamadım. Ama cevap için teşekkürler. Haklısın. Görünüşe göre, $ cookieStore'a bir şey ekleme sürecinde, değer etrafında ekstra bir "" seti de eklenir. Yani, evet, sadece kendiniz koyduğunuz $ cookieStore'dan şeyler alabilirsiniz. Ve $ cookies.PHPSESSID kullanarak harika çalıştı. – cutmancometh

+0

Ayrıca, cevabınızı kabul ediyorum ama yapamam çünkü repom yeterince yüksek değil. – cutmancometh

+0

Sorunuzu reddettim .. belki şimdi yapabilirsiniz? StackOverflow'a hoş geldiniz! – Langdon

0

Veya sadece bir işlevde $ cookieStorage sarın ve bir değer döndürebilir veya boş bir dize. bu artıları var olan

var sid = getPHPSESSID(); 

function getPHPSESSID() { 
    return $cookieStore.get('PHPSESSID') || ''; 
} 

Bu durumda açısal servisini kullanırız ve bu tanımlama anahtar-değer çifti koymazsan, sen sonuçta