0

大家好,我是 Phonegap 的新手,我正在使用PHP制作简单的登录应用程序。我的文件类型如下:

  1. 索引.html
  2. mob_login.php
  3. 科尔多瓦.xml

所以我的问题是当我在 android 的 phonegap 上运行我的程序时,我的mob_login.php文件不起作用。

  • 在我的 index.html 文件中,我的 url 是url: "http://10.0.0.2/mob_login.php"和我本地主机上的 PHP 文件。如何在我的 phonegap 上访问此文件。
  • 并在我的 cordova.xml 文件中更改访问来源 =“http://10.0.0.2*”
  • 所以请告诉我在哪里更改我的文件,我该如何解决错误。

我的 index.html 文件是:-

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PhoneGap Login</title>
    <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
    <script type="text/javascript" charset="utf-8" src="jquery-1.7.2.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="jquery.mobile-1.1.1.js"></script>

    <script type="text/javascript" charset="utf-8">
        function login() {
        $.support.cors = true;
        $.mobile.allowCrossDomainPages = true;

            $(document).ready(function() {
                              var user = $("#user")[0].value;
                              var pass = $("#pass")[0].value;

                              $("#message")[0].value = "In function "+user +"  "+ pass;                                      
                              $.ajax({
                                     type: "POST",
                                     url: "http://10.0.0.2/mob_login.php",
                                     data: "users"+user+"&pass="+pass,

                                     success: function(result){

                                     $("#message")[0].value = result;
                                     alert("Result "+result);
                                     }
                                     });
        });
                              }
        </script>



</head>

<body>
    <form>
        Username: <input type="text" size="25" id="user"/>
        <br />
        Password: <input type="text" size="25" id="pass"/>
        <br />
        <input type="text" size="25" id="message" value="error message" />
        <br />
        <input type="button" value="Submit" onclick="login()"/>
        </form>

</body>
</html>

我的 mob_login.php 文件是:-

<?php
$user = $_REQUEST['user'];
$pass = $_REQUEST['pass'];

if($pass == "123" && $user == "kirit"){
    echo "Login Sucsess";
} else {
    echo "Login Fail";
}
?>

我的 cordova.xml 文件是:-

<?xml version="1.0" encoding="utf-8"?>

<cordova>
    <access origin="http://10.0.0.2*"/> 
    <log level="DEBUG"/>
    <preference name="useBrowserHistory" value="false" />
</cordova>

这是我的文件,我该如何解决这个问题,我尝试了很多方法,但我无法解决,请任何朋友帮助我?

4

2 回答 2

1
u placed users in ajax code instead of "user=" try below code    


$.ajax({
                                 type: "POST",
                                 url: "http://ipaddress of ur system/JQuery/mob_login.php",
                                 data: "user="+user+"&pass="+pass,

                                 success: function(result){

                                 $("#message")[0].value = result;
                                 alert("Result "+result);
                                 }
                                 });
    });
于 2012-08-23T11:18:53.860 回答
0

问题是您需要在单击时进行 AJAX 调用,而不是在文档完成加载时调用。这是一个问题:

var user = $("#user")[0].value;
var pass = $("#pass")[0].value;

此代码在页面加载时执行,但就在那一刻,用户和传递输入具有空值。单击登录按钮时,您需要更改代码以进行此分配。

此外,您可以删除“就绪”侦听器,然后像这样编写登录函数:

function login() {
    $.support.cors = true;
    $.mobile.allowCrossDomainPages = true;

    var user = $("#user").val();
    var pass = $("#pass").val();

    $("#message").text("In function "+user +"  "+ pass);                                      
    $.ajax({
        type: "POST",
        url: "http://10.0.0.2/mob_login.php",
        data: "users"+user+"&pass="+pass,

        success: function(result) {

            $("#message")[0].value = result;
            alert("Result "+result);
        }
    });
}

您的代码中的问题是,当登录函数被调用时,ready 事件已经被调度,所以 ajax 请求永远不会被发送到服务器。

希望这可以帮助。祝你有美好的一天。

于 2012-08-20T14:35:37.333 回答