2015-04-28 70 views
1

我正在簡單建立必須具有數據和徽標的註冊。在測試中可以傳輸文件,並分別數據,但嘗試將它們一起發送下面的錯誤時,會發生:SyntaxError:意外的令牌S,AngularJS,Spring

SyntaxError: Unexpected token S 
at Object.parse (native) 
at qc (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:14:245) 
at Zb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:76:423) 
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:77:283 
at r (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:7:302) 
at Zc (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:77:265) 
at c (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:78:414) 
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:112:113 
at n.$get.n.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:126:15) 
at n.$get.n.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:123:106) 

的角度控制器

angular.module('EntregaJaApp').controller('EstabelecimentoController', ['$scope', '$http','Upload', function($scope, $http,Upload){ 

$scope.salvar = function(){ 
     Upload.upload({ 
      url: 'http://localhost:8080/site-web/gerencial/estabelecimento/salvar', 
      file: $scope.picFile[0], 
      method: 'POST', 
      headers: {'Content-Type': 'multipart/form-data'}, // only for html5 
      data: {'estabelecimento': $scope.estabelecimento} 
     }); 
}} 

春季控制器

@Controller 
@RequestMapping("/gerencial/estabelecimento") 
public class EstabelecimentoController { 

@Autowired 
private EstabelecimentoService estabelecimentoService; 

    @RequestMapping(value = "/salvar", method = RequestMethod.POST) 
public ResponseEntity<?> salvar(Estabelecimento estabelecimento,@RequestParam(value="file", required=false) MultipartFile file){ 
    try { 
      byte[] bytes; 

      if (!file.isEmpty()) { 
       bytes = file.getBytes(); 
       //store file in storage 
      } 

      System.out.println(String.format("receive %s from %s", file.getOriginalFilename(), estabelecimento.getNome())); 
     estabelecimentoService.salvar(estabelecimento); 
     return new ResponseEntity<>(MensagensGerais.SUCESSO_SALVAR,HttpStatus.OK); 
    } catch (Exception e) { 
     return new ResponseEntity<>((StringUtil.eVazia(e.getMessage()) ? MensagensGerais.ERRO_CONSULTAR : e.getMessage()),HttpStatus.BAD_REQUEST); 
    } 
} 
    } 
+0

由於錯誤是在解析我猜數據發送到Angular是無效的或它期望的。你是否能夠展示你正在傳輸的內容? –

+0

我試圖傳輸{「nome」:「測試」},也嘗試過JSON.parse()和angular.toJson(),但是有同樣的錯誤。 –

+0

檢查您的JSON數據是否有效... – arman1991

回答

0

做你錯過了返回類型註釋?像

@RequestMapping(value = "/salvar", method = RequestMethod.POST) 
@Produces(MediaType.APPLICATION_JSON) 
public ResponseEntity<?> salvar(Estabelecimento estabelecimento,@RequestParam(value="file", required=false) MultipartFile file){...} 
+0

它沒有工作 –

+0

您可以使用fiddler o wireshark查看服務器響應嗎? – Slumber86

+0

響應頭 觀點解析 HTTP/1.1 200 OK 服務器:Apache-狼/ 1.1 內容類型:應用程序/ JSON 的Content-Length:17 –

0

假設請求指定一個Accept Header「application/json」,它似乎是字符串沒有正確序列化(由春?)。 1.3.x之前的角度版本似乎很慷慨,但現在當響應不正確時,引發異常JSON。我已經添加了以下回應transformer到我的應用程序:

$httpProvider.defaults.transformResponse.unshift(function(data, headersGetter, status){ 
      var contentType = headersGetter('Content-Type'); 
      if(angular.isString(contentType) && contentType.startsWith('application/json')){ 
       try { 
        angular.fromJson(data); 
       } catch(e){ 
        var mod = '"'+data+'"'; 
        try { 
         angular.fromJson(mod); 
         return mod; 
        } 
        catch(e){ 
         return data; 
        } 
       } 
       return data; 
      } 
      else{ 
       return data; 
      } 
     }); 

它通過附加"包裹它把一個JS字符串JSON字符串對象。