我试图通过以下一行从http调用中获取一个json对象。
var u = $http.get("http://localhost:8580/jettyjspconfiguration-example/sql?loc=locc");
当我记录它时
console.log(u);
我没有得到json的回报
Object { $$state: Object, success: $http/promise.success(), error: $http/promise.error()
我如何让它作为json字符串返回?我在工厂使用它,如果重要的话。感谢。
答案 0 :(得分:1)
$http.get
不会返回API发送的值。它只返回HttpPromise
的对象。要获得在then
u
函数所需的值
var u = $http.get("http://localhost:8580/jettyjspconfiguration-example/sql?loc=locc");
u.then(function(response){
var yourVar = response.data;
console.log(yourVar);
});
有关详情,请参阅 Documentation
答案 1 :(得分:0)
将http请求分配给变量不会影响服务调用。您需要以
进行通话var u = $http.get("http://localhost:8580/jettyjspconfiguration-example/sql?loc=locc");
$scope.ResponeData = null;
u.then(function(response){
// Your response will be available here only
$scope.ResponeData = response;
});
您可以找到有关承诺和网络服务电话here的详细信息。
答案 2 :(得分:0)
执行HTTP请求时,此请求不会立即完成,而是异步完成。所以会发生这样的情况:当你发出请求时,你会得到一种令牌(一种承诺),你可以在请求“空中”时跟踪它。
此承诺是您键入时记录的对象:
var u = $http.get("http://localhost:8580/jettyjspconfiguration-example/sql?loc=locc");
console.log(u);
要“跟踪”此承诺,您可以使用then
,error
,success
和finally
为其提供功能,有点类似于事件处理程序功能
所以这就是发生的事情:
// Start the request and get a promise that an answer will eventually come.
var u = $http.get("http://localhost:8580/jettyjspconfiguration-example/sql?loc=locc");
// The request is handled asynchronously, so all we have now is the promise that
// at some time there will be a result.
console.log(u);
// Assign 'event handlers' to the promise
u.then(function(result) {
// This 'event handler' function is called when the async process completes
// successfully. You can now use the data as you please
doFancyStuffWithResultData(result.data);
}, function(error) {
// This 'event handler' function is called when the async process has an error
console.error('Ohnoz, things went wrong', error);
});
请注意,我将“事件处理程序”放在引号中,因为它有助于将函数视为“事件处理程序”,但存在一些差异。查看$q service的文档,了解有关Promise是什么以及它们如何工作的更多信息。