我需要我的服务从服务器返回带有信息的json。
服务守则:
import re
s=open('C:/Users/Tamal/Desktop/py_regex_sample.txt', 'r')
re.sub(r'(\w)+\s(\w)+', r'<fname>\1</fname>\n<sname>\2</sname>', s, 0, flags=re.I)
s.close()
这是来自控制器的代码。
"John Hammond
Joey Mercury"
请求服务器成功,但函数返回undefined。 我还尝试在服务中的fetch()之前添加return语句,以及我在日志中得到的内容:
app.service('Server', function () {
this.fetch = function (data, token) {
fetch('http://104.197.58.108:8080', {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: data,
token: token
})
})
.then(function(response) {
return response.json()
}).then(function(text) {
if (text.success == false) {
return false;
} else {
return text;
}
})
}
})
答案 0 :(得分:0)
你的fetch()方法目前没有返回任何内容。所以它实际上会返回undefined
。
所以你要添加一个return语句。这将使函数返回一个承诺。它不能返回数据,因为fetch是一个异步操作。所以它返回了一个承诺。这意味着来电者必须不做
$scope.materialist = Server.fetch($scope.data2, $rootScope.token);
必须改为
Server.fetch($scope.data2, $rootScope.token).then(function(data) {
$scope.materialist = data;
});
答案 1 :(得分:0)
app.service('Server', function ($http) {
this.getData = function(){
var promise = $http({
method : 'GET',
url: 'http://104.197.58.108:8080'
}).then(function(data){
return data;
}, function(error){
return error;
});
return promise;
}
现在在控制器内部,调用服务的方法,将数据分配给范围变量,并根据需要进行迭代/解析。
Server.getData().then(function(response){
$scope.fetchedData = response;
//Open the Sources tab by pressing in dev tools and see the format of the response by setting debugger points.
// or $scope.fetchedData and parse and assign the values accordingly.
});
我觉得您不需要为JSON格式显式设置标头对象。如果你以后需要设置标题,你总是可以通过在$ http方法中添加与你所做的几乎相同的格式来实现。 有关$ http的更多信息,请参阅ngdocs