http.post将第3个变量发送为空

时间:2017-03-11 13:49:26

标签: angularjs ionic-framework

代码从用户的输入中获取用户名和密码。然后它使用2个函数获取设备Mac地址。我知道这部分可以简化,我愿意接受建议。

我100%确定$ scope.data.macAddr不为空,因为我可以在控制台上打印它。我担心数据类型,但我确认它是一个使用“type”的字符串,它返回'String'。

更新:当我检查帖子标题时,只有用户名和密码正在发送。

我不明白为什么http.post发送一个空的/根本没有将它传递给服务器。

P.S我知道MD5的风险。我正在使用MD5来测试我的代码。最后,最后,我将使用HTTPS / SSL和Bcrypt

var link = 'http://app.example.com/api.php';

      MacAddress.getMacAddress(function(macAddress){$scope.getMacAddr(macAddress);}, function(fail){console.log(fail);});

      $scope.getMacAddr = function(macAddr) {
        $scope.macAddr = macAddr;
        $scope.data.macAddr = macAddr;
      }

      $http.post(link, {
        username: md5.createHash($scope.data.username),
        password: md5.createHash($scope.data.password),
        macAddr: $scope.data.macAddr
       }).then(function(res) {

        console.log(typeof ($scope.data.macAddr));

Request Headers

1 个答案:

答案 0 :(得分:0)

好的,所以你在这里有两个异步调用。一个是获取MAC地址的调用,一个是http帖子。以下是发生的事情:

  1. 在T0:你调用getMacAddress(),传递一个稍后将被调用的回调函数,当mac地址可用时
  2. 在T1:您发送HTTP请求,将回调传递给then()
  3. 在T1000:mac地址可用:调用步骤1中传递的回调,并初始化$scope.data.macAddr
  4. 在T150000:http响应可用。调用在步骤2传递的callpack,并打印$scope.data.macAddr
  5. 当mac地址可用时,从步骤1中传递的回调函数内发送http请求。