如何使用$ http in angular中的结果创建变量?

时间:2016-12-01 06:57:15

标签: javascript angularjs json

我试图通过以下一行从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字符串返回?我在工厂使用它,如果重要的话。感谢。

3 个答案:

答案 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);

要“跟踪”此承诺,您可以使用thenerrorsuccessfinally为其提供功能,有点类似于事件处理程序功能

所以这就是发生的事情:

// 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是什么以及它们如何工作的更多信息。