如何使Phonegap连接到本地主机

时间:2020-04-27 20:11:11

标签: php ajax cordova phonegap

我第一次使用phonegap构建带有后端(php,mysql)的混合移动应用程序。因此,我正在对phonegap如何连接到localhost上的php进行发送和检索数据的测试。但是没有检索到任何数据,我将代码缩减为this,并且在ajax调用和php代码中都没有看到错误。所以我想这应该是phonegap连接到后端的方式,我错了,请帮忙。

html表单和ajax调用:

        <form id="form1">
       <input  type="text" id="email"  />
         <input  type="password" id="password"  />
         <input type="submit" name="login" id="login" value="Login">  
        </form>

      <script type="text/javascript">
      $("form").submit(function(){
         var data= ("#form1").serialize();
       $.post("http://localhost/securityapp/login.php",data,function(response){
     alert(response);
       });

        });

      </script>

php文件:

          <?php
           include 'db.php';
      session_start();
     if ($_POST ) {
     echo $_POST;

        }


           ?>

基本上,它的意思是提醒发送到php脚本的值作为响应,但它没有这样做,“网络”选项卡显示200作为状态。我究竟做错了什么?我觉得phonegap没有连接到定义的网址

1 个答案:

答案 0 :(得分:0)

这是我解决此问题的方法:

  1. 在保存服务器当前URL / IP的数据库上创建了一个表

  2. 创建了一个check-url.php文件,该文件在数据库上运行查询以查看IP地址/ URL 服务器

  3. 我创建了一个connection.js文件,该文件基本上是向check-url.php发出请求 以获得要在Cordova应用中使用的服务器的当前IP

check-url.php


 header("Access-Control-Allow-Origin: *"); //to allow phonegap access it because of cross origin and domain restrictions
 require 'db.php';
 $query= "SELECT url  FROM settings";
 $query= mysqli_query($conn,$query);
 $row = mysqli_fetch_assoc($query);
 $row= $row['url'];
 echo $row; //current IP exmaple:http://127.0.0.1:80/

connection.js

  //check current server ip from database
export function check_url(callback) {
  var httpRequest = new XMLHttpRequest();
  httpRequest.onreadystatechange = function() {
      if (httpRequest.readyState === 4) { // request is done
          if (httpRequest.status === 200) { // successfully
              callback(httpRequest.responseText); // we're calling our method
          }
      }
  };
  httpRequest.open('GET', "http://127.0.0.1:80/projectname/check-url.php");
  httpRequest.send();
}

因此,每当我想通过Cordova连接到后端时,我都会将来自connection.js的check-url()函数导入我的前端ajax请求url中,如下所示:

<script type="module">
   import {check-url} from './connection.js';

check-url(function(result) {
var currentIP= result;
$.ajax({
type:"POST",
url: currentIP + "projectapp/login.php",
data:data,
success: function(data){
//do something
}
});
});
</script>  

注意:connection.js,数据库和服务器IP中的URL / IP应该相同,因为这可以帮助您避免总是重复IP,并且在使用PhoneGap mobile以及切换到在线,更改时进行测试到您项目的当前IP地址。