Chan Yoong Hon
Chan Yoong Hon

Reputation: 1812

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

I am developing a hybrid application using Ionic Framework. I am using $http Restful web service to POST data into my server and get the response from server. When I test it in browser, it works well and I able to retrieve data from serve. But when I test it in my android device, it does not work at all. The following is my code.

Angularjs Code

  $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 Backend Code

<?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;
    }
?>

Upvotes: 0

Views: 554

Answers (1)

Chan Yoong Hon
Chan Yoong Hon

Reputation: 1812

I figure it out by myself. Is because of I never add few permissions in my android Manifest file. I have to include this 3 permissions in my android manifest.

<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" />

Next, I have to include cordova-whitelist plugin and add this into my config.xml

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

Upvotes: 1

Related Questions