我第一次使用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没有连接到定义的网址
答案 0 :(得分:0)
这是我解决此问题的方法:
在保存服务器当前URL / IP的数据库上创建了一个表
创建了一个check-url.php文件,该文件在数据库上运行查询以查看IP地址/ URL 服务器
我创建了一个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地址。