2013-09-08 13 views
18

次の行:AngularJS fromJsonで予期しないトークン()

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

はこのエラーを投げている:

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) 

をだから、私はライン779でangular.jsにブレークポイントを置きますコードがある:

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

jsonの値がJSON.parse()に渡される「mnp801fap6kor50trgv4cgk7ありますm2。

私はまた、そのメソッドに渡される他のものは、通常、 "userName" "のように2つの引用符を持つことに気付きました。

助けてください。私は数時間、これに対して頭を叩いている。

また、誰かがAngularを使用してクッキーからPHPセッションIDを取得するより良い方法を知っていれば、それも素晴らしいでしょう。 (はい、jQueryやベアメタルJSを使用して行うことができますが、Angularを使用したがっています)。

ありがとうございます!!!

答えて

23

$cookieStoreは、$cookieStoreで作成されていないCookieを読み取るようにはなっていません。コメントから:

* @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は重要な部分です。あなたはおそらく、代わりに$cookiesを使用するので、同じようにしたいhttp://jsfiddle.net/xtmrC/

:私はここにあなたの問題を再現することができましたhttp://jsfiddle.net/MXTY4/9/

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

感謝を空の文字列を取得しますと、あなたが角度のサービスを使用しますその場合

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

。私は実際に私がそれを投稿した後、これに答えを見つけましたが、私の担当者が十分に高くないので、8時間回答を投稿できませんでした。しかし、応答に感謝します。あなたは正しいです。 $ cookieStoreに何かを追加する過程で、値の周りに余分な ""セットが追加されているようです。そう、ええ、あなたはあなた自身を置くだけで$ cookieStoreから物事を得ることができます。 $ cookies.PHPSESSIDを使用していて、素晴らしい仕事をしました。 – cutmancometh

+0

また、私はあなたの答えをupvoteしたいと思いますが、私の担当者が十分に高くないことはできません。 – cutmancometh

+0

私はあなたの質問をupvoted ..多分今できる? StackOverflowへようこそ! – Langdon

0

それとも、単に機能で$ cookieStorageをラップし、値を返すことができます空文字列です。それは長所だとあなたがクッキーにキーと値のペアを入れていない場合、あなたはその結果に

関連する問題