如何让Phonegap连接到localhost?

问题描述 投票:0回答:1

我是第一次使用phonegap来建立一个混合型的移动应用程序,并使用后端(php,mysql)。所以我正在做一个测试,测试phonegap如何连接到本地主机上的php来发送和检索数据。但是没有数据被检索到,我把我的代码缩减成这样,我看到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没有连接到定义的url上。

php ajax cordova phonegap
1个回答
0
投票

我是这样解决这个问题的:

  1. 在数据库中创建了一个表,用来保存服务器的当前URLIP。

  2. 创建了一个check-url.php文件,这个文件在数据库中运行查询,查看服务器的IPURL。

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

检查-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/

连接.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中的URLIP,数据库和服务器的IP应该是一样的,因为这样可以帮助你不至于总是重复IP,也可以在使用PhoneGap手机时进行测试,另外当你切换到live时,将其改为你项目的当前IP地址。

© www.soinside.com 2019 - 2024. All rights reserved.