1

我正在尝试使用 PhoneGap 为现有的 PHP Web 应用程序构建 Android 应用程序。我有用于逻辑的 PHP 文件和用于呈现 UI 的 HTML 文件。这些文件放置在我系统中的 Webserver (Wampserver) 中。现在我已经看到了一些来源,它们说 -> 对来自 phonegap 项目的 web 服务器中的 PHP 文件进行 Ajax 调用。基于此,我创建了一个 index.html 文件,该文件对目标 txt.php 文件进行了 Ajax 调用,并尝试在 Android Virtual Device Manager 上运行。我看到 index.html 被加载到 AVD 上,我在 textarea 中给出了一些输入并单击了“保存消息”按钮。但我在 AVD 上没有看到任何回应。谁能指导我如何放置所有这些 HTML 文件、php 文件以及如何进行 ajax 调用。我希望这个问题能帮助很多像我这样的初学者。

截至目前,以下代码被命名为 index.html 并放置在 Phonegap 项目的 assets/www/index.html 中。我正在使用加载 index.html 页面

  super.loadUrl("file:///android_asset/www/index.html");

Index.html 页面看起来像这样..

 <html>
<head>
<script language=javascript>

function chk_length(myform)
{
    maxLen=767;
    if(myform.txt.value.length>=maxLen)
    {
        alert('You Reached max Length in text area');
        myform.txt.value=myform.txt.value.substring(0,maxLen);
    }
    else
    {
        myform.num.value=maxLen-myform.txt.value.length;
    }
}
</script>
<script>                          
    function myCall() {
        $.ajax({
                    url: "localhost:8080/yours/txt.php",
                    type: "POST",            
                    dataType: "html"
                });


         }

</script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body bgcolor="green">

<form name="myform" method="POST">

<p style="align=:center"> <textarea rows="10" cols="30" name="txt" id="txt" onclick=chk_length(this.form); onkeypress=chk_length(this.form); ></textarea></p>
<input style="background-color:Yellow" size="4" name="num"> <i style="color:yellow"> Characters left</i><br>
<input type="submit" value="Save Message" id="Save" name="button" onclick="myCall()"  onmouseover=chk_length(this.form);>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<br>
</form>
</body>
</html>

并且放置在我系统的网络服务器(Wampserver)位置的 txt.php 页面看起来像这样

<html>
<body>
<?php
    $txt=$_POST['txt'];
    $dt=date("y/m/d");
    $button=$_POST['button'];

    echo "$txt";
    include("pg2.php");
?>
<p style="color:orange">* Max 767 characters only *</p>

<?php

    mysql_connect('localhost','root','');
    mysql_query("create database mydb");
    mysql_select_db('mydb');
    $querys="create table mydb.events(edate Date,event varchar(767), UNIQUE(event))";
    mysql_query($querys);

    mysql_query('create table mydb.like(edate Date,likes varchar(767),UNIQUE(likes))');
    if($button=="Save Message")
    {
        if($txt!="")
        {
            $quer="insert into mydb.events(edate,event) values('$dt','$txt')";
            $quer=str_replace("\r\n"," ",$quer);
            if(mysql_query($quer))
            {
                $file=fopen('./backup.txt','a');
                fputs($file,$quer."; \r\n");
                fclose($file);
            }
            $num=mysql_affected_rows();
            //echo "$num rows affected"; 
        }
        $query="select * from mydb.events";
        $result=mysql_query($query);
?>
<table>
<?php
while($row=mysql_fetch_row($result))
{
?>
    <tr><td><p style="color:yellow"><?php print("$row[0]"); echo ":";  ?></p></td><td><p style="color:yellow"><?php print("$row[1]"); echo "<br>------------------------------<br>";  ?></p></td></tr>
<?php 
}
?>
</table>
<?php
}
if($button=="Like it")
{

    if($txt!="")
    {

        $quer1="insert into mydb.like(edate,likes) values('$dt','$txt')";
        $quer1=str_replace("\r\n"," ",$quer1);
        if(mysql_query($quer1))
        {
            $file=fopen('./backup.txt','a');
            fputs($file,$quer1."; \r\n");
            fclose($file);
        }
        $num=mysql_affected_rows();

}
$query2="select * from mydb.like";
$results=mysql_query($query2);
?>
<table>
<?php
while($rows=mysql_fetch_row($results))
{

?>
<tr><td><p style="color:yellow"><?php print($rows[0]); echo ":";  ?></p></td><td><p style="color:yellow"><?php print("$rows[1]"); echo "<br>------------------------------ <br>"; ?></p></td></tr>
<?php 
}
?>
</table>
<?php
}

?>



</body>
</html>
4

1 回答 1

2

哈哈明白了:) 没有什么额外的工作可以将 PHP 应用程序加载到 android 移动设备上......将所有资源(如 html、php 和图像、css 等)都保存在您的网络服务器中,并确保网络服务器允许其他人使用访问..就是这样,你只需要在你的 phonegap 应用程序的 mainActivity.java 中有以下代码片段..

package com.example.mobility;
import org.apache.cordova.DroidGap;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends DroidGap {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    super.loadUrl("http://IPAddress:port/folder_name/index.html");
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

你完成了!

注意:不要创建我提出的此类代码..它没用...

于 2013-05-19T04:44:35.283 回答