2016-06-03 1 views
0

Я использую angularjs с Struts2. Я могу отправить запрос от angularjs к классу действий Struts2 и получить там объект json и установить json в объекте ответа в действии, но при получении json в angularjs получить недопустимую ошибку персонажа в консоли браузера и в отладке получить undefined для объект ответа. Ниже приведен код для того же: -Получение недопустимой ошибки символа в angularjs и значение ответа не определено

angularModule.controller('ResultDatabaseCtrl',function($scope,$http){ 
         $http.get('/url/test').then(function(response) 
         { 
          $scope.data=response; 
         }) 
}); 

И в действии Struts2 Я пишу код ниже:

public String Test() throws ServletException { 

     response.setContentType("text/json"); 
     response.setHeader("Cache-Control","no-cache"); 

     try { 
      aggOutput = Delegator.getInstance().processRequest(aggInput); 
      response.getWriter().write((String) aggOutput.getValueObject()); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

Здесь в aggOutput.getValueObject оказывает код JSON в указанном ниже формате:

{ identifier: "id",items: [ { id:"1", name:"ABC", Age:12 }, 
{ id:"1", name:"PQR", Age:2 }]} 

в то время как получение данных в angularjs от контроллера получать ответ не определено во время отладки в браузере и в консоли получать ошибку ниже: -

SyntaxError: Invalid character 

at uc (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:15:466) 

at $b (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:82:358) 

    at Anonymous function (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:83:272) 
    at n (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js:7:331) 
+0

Ответ - это что-то возвращенное Struts2. Не зная, как Struts2 может возвращать данные с ответом, вы не можете получить какой-либо объект в угловом режиме. –

+0

Это НЕ действительная строка json. См. Http://www.json.org/. –

ответ

0

Попробуйте изменить ответ на Content-Typeapplication/json от text/json.

+0

Пробовал это тоже в действии, но это тоже не сработало. – Sonam

+0

Не могли бы вы разместить сообщение об ошибке при использовании angular.js, а не в мини-версии? – Venkat

0

А также,

angularModule.controller('ResultDatabaseCtrl', ['$scope', '$http', function($scope,$http){ 
    $http.get('/url/test').then(function(response) 
    { 
    $scope.data=response; 
    }) 
}]); 

Вы должны зависимости инъекционные, но это, вероятно, не то, что вызывает ошибку по существу.

+0

Не могли бы вы привести один пример, это было бы очень полезно. Точно, какие зависимости нужно вводить. – Sonam

+0

Они в примере кода, который я опубликовал. ['$ Scope', '$ http' бит перед вашей функцией() – rrd

+0

Спасибо .. Пробовал это, но все равно получал ту же ошибку. – Sonam

1

Спасибо всем за помощь. Там был формат JSON, который вызывал проблему, а также в двойных кавычках данных. После исправления проблемы проблема решена.

0

Попробуйте добавить функцию ошибки в свой код. Это вызовет точное сообщение об ошибке.

angularModule.controller('ResultDatabaseCtrl',function($scope,$http){ 
    $http.get('/url/test') 
    .then(function (response) { 
     console.log(JSON.sringify(response)); 
     function(error) {console.log(JSON.sringify(error));} 
    ); 
});