2015-11-15 48 views
0

我的web服務返回數據,我替換不必要的字符並獲取有效的字符串。在angularJS中對象的字符串

如何在對象中傳輸字符串。

示例1靜態數據(不是來自Web服務)正常工作。從web服務

$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

你可以發佈你的web服務的響應看起來像什麼嗎? – groooves

+0

請在您的問題中提供一個示例Web服務響應。 –

+1

你應該更具體。你是什​​麼意思,它不起作用?您是否檢查過以確保示例2的第1行中的「數據」不爲null或未定義?如果是這樣,它肯定會在下一行產生問題。 – Ernie

回答

1

清理你的字符串後,你只需要運行JSON.parse()

試試這個:

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

正則表達式的版本:

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

這裏不工作是完整的源http://jsbin.com/nuxanayuca/edit?html,js,output – paris0000

+0

編輯答案,這應該現在工作。 –

+0

做得好,tnx ....... – paris0000

0

替換()返回一個字符串。它不會將結果存儲在「str」變量中。試試這個:

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

這是JSONP格式!你不需要清理任何東西。只需定義一個有效的回調名稱並使用$http.jsonp()即可。在documentation你會發現一個工作樣本。