Строка для объекта в angularJS

0

Мой веб-сервис возвращает данные, я заменяю ненужный символ и получаю действительную строку.

Как переносится строка в объект.

Пример 1: статические данные (а не веб-службы) работают нормально.

$scope.str = [];
str = {"car": [{"id": 11,"name": "BMW",}, {"id": 22,"name": "Toyota"}],};
$scope.data = str;

Пример 2: данные из веб-службы не работают

str = data;
str.replace("?", "").replace("(", "").replace(")", "").replace(";", "");
$scope.data = str;
  • 2
    Можете ли вы опубликовать, как выглядит ответ вашего веб-сервиса?
  • 0
    Пожалуйста, включите пример ответа веб-службы в свой вопрос.
Показать ещё 3 комментария

3 ответа

1
Лучший ответ

После очистки строки вам просто нужно запустить JSON.parse(),

попробуй это:

str = data;
JSON.parse(str.replace('?','').replace('(','').replace(')','').replace(';','').replace(',}','}').replace(',};','}'))
$scope.data = JSON.parse(str);

Версия REGEX:

JSON.parse(data.replace(/\?|\(|\)/g, '').replace(/,}/g, '}').replace(/;/g, ''));

Рабочая копия:

<!DOCTYPE html>
<html ng-app="app">

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular-sanitize.js"></script>
  <meta charset=utf-8 />
  <title></title>
</head>

<body ng-controller="MyController">
  <option ng-repeat="cars in data.car" value="{{cars.name}}">{{cars.name}}</option>

  <button ng-click="calculateQuantity()">Calculate</button>
  <script>
    var app = angular.module('app', ['ngSanitize']);

    app.controller("MyController", function($scope, $http) {


      $scope.calculateQuantity = function() {

        $http.get('https://crossorigin.me/http://wsvuci.int-ware.com/appWS.asmx/myService?callback=?', {
            params: {
              userName: 'aa',
              procedureName: "EXECUTE wsReturn"
            }
          })
          .success(function(data) {
            $scope.data = JSON.parse(data.replace(/\?|\(|\)/g, '').replace(/,}/g, '}').replace(/;/g, ''));
          })
          .error(function() {
            alert("error");
          });
      };

    });
  </script>

</body>

</html>
  • 0
    Не работает здесь полный исходный код jsbin.com/nuxanayuca/edit?html,js,output
  • 0
    отредактировал ответ, теперь это должно работать.
Показать ещё 1 комментарий
0

Это формат JSONP! Вам не нужно ничего чистить. Просто определите действительное имя обратного вызова и используйте $http.jsonp(). В документации вы найдете также рабочий образец.

0

replace() возвращает строку. Он не сохраняет результат в переменной "str". Попробуй это:

str = data;
str = str.replace("?", "").replace("(", "").replace(")", "").replace(";", "");
$scope.data = str;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню