2016-11-10 51 views
0

メソッドPOSTを使用しているときにこのバグが表示されます。私を助けてください。予期しない構文エラー予期しないトークン{JSONで

angular_min.js:114 SyntaxError: Unexpected token { in JSON at position 71 
    at JSON.parse (<anonymous>) 
    at wc (angular_min.js:16) 
    at cc (angular_min.js:88) 
    at angular_min.js:89 
    at n (angular_min.js:7) 
    at hd (angular_min.js:89) 
    at c (angular_min.js:91) 
    at angular_min.js:126 
    at m.$eval (angular_min.js:141) 
    at m.$digest (angular_min.js:138) 

マイコード: VARのJSON = {PARAMETER_NAME: "量"、 "PARAMETER_VALUE":$のscope.it.amount}。

  var arr=[]; 
     arr.push(json); 
     $scope.object={formula:$scope.it.formula_saving_point}; 
     $scope.companyTemp={company_id:com_id}; 
     var url = API_URL + "cumulative_point_formula";  
     var cmd = "check_formula"; 
     var jsonFinal = JSON.stringify({json_parameter: JSON.parse(JSON.stringify(arr)), 
      company: JSON.parse(JSON.stringify($scope.companyTemp)), 
      cumulative_point_formula: JSON.parse(JSON.stringify($scope.object))}); 

このログjsonFinal

{"json_parameter":[{"parameter_name":"amount","parameter_value":"111111111"}],"company":{"company_id":40743},"cumulative_point_formula":{"formula":"amount/10000"}} 

これは、メソッドのPOSTです:

$http({ 
       method: 'POST', 
       url: url, 
       data: $.param({cm: cmd, dt: jsonFinal}), 
       headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
      }).success(function (response) { 
       console.log("success"); 
}); 

このバグを修正する方法は?

+0

目的に合わせてこのコードでコードを複製しましたか? – Claies

+1

'JSON.parse(JSON.stringify($ scope.companyTemp))'うーん...なぜ? –

+0

@Derek朕會功夫:オブジェクトを深くクローンする昔ながらの方法。多くのブラウザでは、それは驚くほど速い方法です。 – slebetman

答えて

0

あなたはそれがJSON.parseに由来して、エラーを詳しく見ていく場合ではない$ HTTP

JSON.parse(JSON.stringify($scope.companyTemp)) 

文字列化>解析$スコープと同じ結果になります。私は、このエラーは、ここでこのコードの塊はかなり冗長であるこのライン

var jsonFinal = JSON.stringify({json_parameter: JSON.parse(JSON.stringify(arr)), 
    company: JSON.parse(JSON.stringify($scope.companyTemp)), 
    cumulative_point_formula: JSON.parse(JSON.stringify($scope.object))}); 

によって引き起こされていると信じています。 companyTempなどがあり、他と同じでこれと同じです:

var jsonFinal = JSON.stringify({ 
     json_parameter: arr, 
     company: $scope.companyTemp, 
     cumulative_point_formula: $scope.object 
    }); 

JSON.parseは、それはまだエラーが発生した場合、私は、これら3つのARRの一つと考えてい

JSON.stringifyが文字列

にJavaScriptオブジェクトに変換し、有効なJavaScriptオブジェクトにJSON文字列に変換します$ scope.companyTemp$ scope.objectに無効な値があります。

役に立ったと思っています

+0

こんにちはPreenz、私はそれを得て、私はあなたの道を試みるが、私はそれを解決しない。「SyntaxError:予期しないトークン(JSONの71桁目に)」が再び表示されます。しかし、私はconsole.log jsonFinalとPOSTMANでテストします。それは走っている。結果は次のとおりです。[ { "result": "1" } ] もう一度お手伝いできますか? – John

+0

私はこれらの変数の中身を完全に推測することはできませんが、これらの変数のいずれかが**文字列**であれば、JSON.stringify **が爆発します。これらの変数をチェックしてください。** arr **、** $ scope.companyTemp **、** $ scope.object **、** $ scope.it.formula_saving_point **、** com_id ** – masterpreenz

+0

ああ。それを解決しました。どうもありがとうございます。 – John

関連する問題