简体   繁体   English

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

[英]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. 我正在使用Ionic Framework开发混合应用程序。 I am using $http Restful web service to POST data into my server and get the response from server. 我正在使用$ http Restful Web服务将数据发布到服务器中,并从服务器获取响应。 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. 但是,当我在Android设备上对其进行测试时,它根本无法正常工作。 The following is my code. 以下是我的代码。

Angularjs Code 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 Backend Code 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;
    }
?>

I figure it out by myself. 我自己弄清楚。 Is because of I never add few permissions in my android Manifest file. 是因为我从来没有在我的Android Manifest文件中添加很少的权限。 I have to include this 3 permissions in my 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" />

Next, I have to include cordova-whitelist plugin and add this into my config.xml 接下来,我必须包含cordova-whitelist插件并将其添加到我的config.xml中

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

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

相关问题 Ionic - 应用程序可在浏览器中运行,但在移动设备中模拟时不起作用 - Ionic - app works in browser but does not work when emulated in mobile $ _POST不适用于$ http POST - $_POST doesn't work well with $http POST 非常简单的android-php通信不适用于http发布 - Very simple android-php communication does not work with http post 即使相同的代码在模拟器中也能正常工作,为什么手机仍返回HTTP 403错误? - Why does my phone return HTTP 403 error, even though the same code works in emulator? 无法使用http.post ionic发送数据 - not able to send data with http.post ionic AngularJs,Ionic:$http.get 不起作用 - AngularJs, Ionic: $http.get does not work javascript发布到.php文件一台服务器不起作用 - 在浏览器中手动输入URL到相同的.php工作 - javascript post to .php file one server does not work - manual entry of URL in browser to same .php works 为什么相同的http请求在浏览器中有效,但从Android应用发送时却失败? - Why the same http request works in browser and fails when sent from my Android app? php脚本在localserver上运行良好,但在远程服务器上不运行 - php script works well on the localserver but does not work on the remote server 我的POST数据中出现HTTP错误 - HTTP Error in my POST data
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM