从Web服务返回我的json数据的Angularjs服务在return语句中创建错误未捕获语法错误意外标识符。
这是我的angularjs服务 -
app.factory('GetProjectService', function ($http, $q) {
return {
getProject: function(str) {
$http({
method: 'GET',
url: 'http://localhost:19342/api/Search/GetAllProjects',
headers: { 'Content-Type': 'application/json' }
}).then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
}, function(response) {
return $q.reject(response.data);
});
}
};
});
答案 0 :(得分:1)
$ q在您的代码中未正确使用。请参阅以下代码段 -
app.factory('GetProjectService', function ($http, $q) {
return {
getProject: function(str) {
var deferred = $q.defer();
$http({
method: 'GET',
url: 'http://localhost:19342/api/Search/GetAllProjects',
headers: { 'Content-Type': 'application/json' }
}).then(function(response) {
deferred.resolve(response.data);
}, function(response) {
deferred.reject(response.data);
});
return deferred.promise;
}
};
});
但是当你是$ http时,没有必要使用$ q,因为$ http会返回promise obj。这是在服务中使用$ http的另一种方式 -
app.factory('GetProjectService', function ($http, $q) {
return {
getProject: function(str) {
return $http({
method: 'GET',
url: 'http://localhost:19342/api/Search/GetAllProjects',
headers: { 'Content-Type': 'application/json' }
});
}
};
});
答案 1 :(得分:0)
getProject
缺少return
声明。
app.factory('GetProjectService', function ($http, $q) {
return {
getProject: function getProject(str) {
//RETURN http promise
return $http({
method: 'GET',
url: 'http://localhost:19342/api/Search/GetAllProjects',
headers: { 'Content-Type': 'application/json' }
}).then(function onSuccess(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
}, function onReject(response) {
return $q.reject(response.data);
});
}
};
});
在函数层次结构的每个级别都需要有return
语句。工厂需要return
语句,getProject
函数需要return
语句,onSuccess
和onReject
函数需要return
或throw
声明。