如何让 Phonegap 连接到本地主机
How to make Phonegap connect to localhost
我第一次使用 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 定义的
我是这样解决这个问题的:
在保存服务器当前 URL/IP 的数据库上创建了一个 table
创建了一个检查-url.php 文件,该文件对数据库运行查询以查看 IP/URL
服务器
我创建了一个connection.js文件,这个文件基本上是请求检查-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/
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 连接到后端时,我都会将函数 check-url() 从 connection.js 导入到我的前端 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中的URL/IP、数据库和服务器IP应该是相同的,因为这样可以帮助你不要总是重复IP,也可以在使用PhoneGap mobile时进行测试,也可以在你切换到live,改成你项目当前的IP地址。
我第一次使用 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 定义的
我是这样解决这个问题的:
在保存服务器当前 URL/IP 的数据库上创建了一个 table
创建了一个检查-url.php 文件,该文件对数据库运行查询以查看 IP/URL 服务器
我创建了一个connection.js文件,这个文件基本上是请求检查-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/
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 连接到后端时,我都会将函数 check-url() 从 connection.js 导入到我的前端 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中的URL/IP、数据库和服务器IP应该是相同的,因为这样可以帮助你不要总是重复IP,也可以在使用PhoneGap mobile时进行测试,也可以在你切换到live,改成你项目当前的IP地址。