繁体   English   中英

爱奥尼亚·科尔多瓦(Ionic Cordova)$ http POST数据在浏览器中效果很好,但在我的Android手机中不起作用

[英]Ionic Cordova $http POST data works well in browser but does not work in my android phone

我正在使用Ionic Framework开发混合应用程序。 我正在使用$ http Restful Web服务将数据发布到服务器中,并从服务器获取响应。 当我在浏览器中对其进行测试时,它运行良好,并且能够从服务中检索数据。 但是,当我在Android设备上对其进行测试时,它根本无法正常工作。 以下是我的代码。

Angularjs代码

  $scope.validateBorrower = function(){
    employeeNumber =  $scope.assetBorrowing.employeeNumber;
    employeeName = $scope.assetBorrowing.employeeName;
    employeeDeparment = $scope.assetBorrowing.employeeDepartment;

    if(employeeNumber == null && employeeName == null){
        alert("Please Enter Employee Number or Employee Name");
    }else{
        $http({
          url: "http://131.4.44.69/php3/validateBorrower.php",
                method: "POST",
                data: {
                    'employeeNumber': employeeNumber,
                    'employeeName' : employeeName
                },
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
            }).success(function(response) {
                alert("Valid Employee");
                $scope.assetBorrowing.employeeNumber = response[0].employeeNumber;
                $scope.assetBorrowing.employeeName = response[0].employeeName;
                $scope.assetBorrowing.employeeDepartment =  response[0].employeeDepartment;
                $scope.borrowbtn  = false;

            }).error(function(response) {
                alert("error");
            });
            alert(employeeNumber);
    }
  }

PHP后端代码

<?php
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Credentials: false");
    header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
    header('P3P: CP="CAO PSA OUR"'); 
    header("Content-Type: application/json; charset=utf-8");

    $postdata = file_get_contents("php://input");
    $employeeRequest = json_decode($postdata, true);
    @$employeeNumber =  $employeeRequest['employeeNumber'];
    @$employeeName =   $employeeRequest['employeeName'];

    if(empty($employeeNumber)){
        @$employeeName =   $employeeRequest['employeeName'];
    }else{
        @$employeeName = "";
    }

    $db_host = "localhost";
    $db_user = "jack";
    $db_password = "1234";
    $db_database = "daikin_asset_management";
    $conn = new mysqli($db_host, $db_user, $db_password, $db_database);

    if($conn->connect_error){
        echo "Connection Problem";
    }

    if(empty($employeeNumber) && empty($employeeName)){
        echo "Error";
    }else{
        $getUserQuery = "SELECT * FROM xpouser WHERE  (username='$employeeName') OR (employee_no = '$employeeNumber') "; 
        $getUserRetval = $conn->query($getUserQuery);
        $userRow = mysqli_fetch_array($getUserRetval);

        $employeeName = $userRow['username'];
        $employeeNumber = $userRow['employee_no'];
        $employeeDepartment = $userRow['department'];
        $_arr = array();
        $array = array(
            'employeeNumber' => $employeeNumber,
            'employeeName' => $employeeName,
            'employeeDepartment' => $employeeDepartment
        );  
        $jsonObjectChannel = json_encode($array);   
        $jsonObjectChannel = "[" . $jsonObjectChannel . "]";


        echo $jsonObjectChannel;
    }
?>

我自己弄清楚。 是因为我从来没有在我的Android Manifest文件中添加很少的权限。 我必须在Android清单中包含这3个权限。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

接下来,我必须包含cordova-whitelist插件并将其添加到我的config.xml中

<access origin = "http://example.com" />
<allow-navigation href = "*://*.example.com/*" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM