【问题标题】:how to fetch data in angular js that is sent as json response from node js (express js middle ware)如何在角度 js 中获取作为 json 响应从节点 js 发送的数据(表达 js 中间件)
【发布时间】:2015-12-09 15:50:37
【问题描述】:

所以我正在处理我手动制作的令牌。我想要做的是在用户登录后将令牌以 json 格式或其他格式发送到角度模块,然后我想将其保存在 cookie 中。

这是来自节点 js 的简单 json 响应代码

res.json({success : 1, token: "adhahashahd"});

现在请指导我如何在角度控制器中获取它,然后如何将它保存在角度 cookie 中。

谢谢。

这是编辑过的部分

这是我的控制器调用节点 js 路由的代码

    $http.post('../userlogin', $scope.user).success(function(response) {
    console.log(response);

这是nodejs在整个过程完成后的响应

res.json({token : "asx"});

现在这是我从下面给出的答案中遵循的 cookie 部分。

    $http.post('../userlogin', $scope.user).success(function(response) {
    console.log(response);




   $http.get('userlogin').success(function(data){
    data=JSON.Parse(data); 
   $cookie.put('token',data.token)
    }).error(function(error){
    console.log(error)
    })

错误出现在前端部分,如谷歌浏览器的开发者窗口中所见

GET http://localhost:1339/userlogin 404 (Not Found)

对你们所有人投了赞成票,谢谢大家。一个问题,如果所有答案都足够好,我可以接受多个答案。因为你们都给出了正确的建议。

我真的很感激。 :)

编辑没有 2 个人

当我只是这样做时

var z = response.token; 
      console.log(z);
      $cookie.put('token', z);

我能够得到我想要的,但错误现在与 cookie 有关。

上面写着

ReferenceError: $cookie is not defined
    at controller.js:35
    at angular.js:9369
    at angular.js:13189
    at l.c.$get.l.$eval (angular.js:14401)
    at l.c.$get.l.$digest (angular.js:14217)
    at l.c.$get.l.$apply (angular.js:14506)
    at l (angular.js:9659)
    at P (angular.js:9849)
    at XMLHttpRequest.w.onload (angular.js:9790)

获取数据已经完成,虽然不是按照你们建议的方法。我在做什么是对的还是不合常规的?请让我知道原因,这将有助于我更好地理解该主题。

谢谢

上次编辑

我上面提到的cookie问题解决了,只是因为我忘记使用store这个词了。

你们给我的代码,我没有反对,但事情对我来说很简单。由于我可能不理解的事情,通常它可能是错误的。

这就是为什么我要求你们在必要时进一步添加任何内容。

感谢您的时间和帮助。

【问题讨论】:

    标签: javascript json angularjs node.js cookies


    【解决方案1】:

    在 angularjs 中调用发送此令牌的 nodejs API

    要从 angularjs 调用 nodejs API,请使用 angular $http 模块,如果您的节点 API 是 RestAPI,则使用 $resource 以更好地控制 API 调用。

    例子:

    $http.get('apicall');
    

    【讨论】:

    • 是的,我正在使用 RESTapi。你能举个实际的例子吗?
    • 好吧,谷歌搜索带我去了无用的教程和无用的 stackoverflow 问题。
    【解决方案2】:

    假设您设置了一个控制器,您只需使用$http 调用即可。

    $http.get(URL) 将通过 GET 方法进行调用,$http.post(url) 将使其成为 POST。

    之后,要获取您需要使用 $http 返回的承诺的数据。我从未使用过 $cookies 服务,但它看起来很简单:

    $http.get(URL).success(function(data){
        $cookie.put('token',data.token)
    }).error(function(error){
        console.log(error)
    })
    

    我强烈建议阅读AngularJS tutorial 以了解更多关于$http 服务、承诺以及如何处理它们的信息。

    【讨论】:

    • 感谢您的帮助。 URL 到底是什么,因为我发布了“userLogin”,这是我将控件发送到使用 post 命令到节点 js 部分的链接,在该链接中处理了所有内容,然后来自该端的响应。
    • 好吧,我不能说,我不知道你的设置。通常,您在节点应用程序中设置一个路由,将数据发送到该路由,作为回报,它将吐出您在初始问题上给出的 JSON 响应。您可以尝试相对 URL 和绝对 URL。检查网络面板以查看您发送的内容、位置和响应内容(包括 http 状态,例如 404)
    • 另外请记住,$http 有不同的方法,如果您的路由设置为 POST,那么您应该使用 $http.post() 而不是 $http.get()
    • 我刚刚发布了一个运行良好的代码。请让我知道这样编码是否可以,或者按照惯例是否有误。谢谢
    【解决方案3】:

    假设您有一个 API,它返回一个 json 序列化对象。

    在 Angular 控制器中:

     $http.get("ur Api Url or path").then(function(data){
       //data will hold json result
      // First parse the "data" variable like data=JSON.parse(data);
      // Then you can save it to cookie or use angularjs  Value
      ....
      }).error(function(error){
     ...
      });
    

    【讨论】:

    • 我认为你得到错误是因为 JSON.Parse 中的大写 P,实际上它是如下所示 JSON.parse 的小案例
    • 哦,我明白了。您能否检查一下我写的答案,让我知道按惯例这样工作是否可以。
    【解决方案4】:

    首先,我要感谢一路上帮助过我的所有人。

    并且没有任何不尊重回答的人,我正在用不同的答案来回答这个问题。

    这是从服务器发送数据作为响应的格式,上面发布的问题也给出了这种格式。

    res.json({token : "asx"});
    

    这是 Angular JS 控制器的代码。

    代码可以根据我的需要正常运行,并且运行良好。

          var z = response.token; 
          $cookieStore.put('token', z);
          var f = $cookieStore.get('token');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 2018-01-14
      • 2018-02-09
      • 1970-01-01
      相关资源
      最近更新 更多