使用 Phonegap、AJAX、PHP 和 mySQL 登录不工作
Posted
技术标签:
【中文标题】使用 Phonegap、AJAX、PHP 和 mySQL 登录不工作【英文标题】:Login with Phonegap, AJAX, PHP and mySQL not working 【发布时间】:2014-10-21 02:16:04 【问题描述】:我在论坛中搜索了任何对我有帮助的东西,但没有任何效果......我正在尝试使用 AJAX 调用位于远程服务器中的 php 文件在 Phonegap 上登录,但 PHP 文件没有返回任何内容...我发布我的代码:
AJAX 调用:
$.ajax(
type: "POST",
data: 'userMail='+user+'&userPassword='+password,
dataType : 'html',
url : "http://www.eega.nl/app/login.php",
crossDomain: true,
async: false,
success: function(data)
if(data!='error')
window.localStorage["userId"] = data;
location.href = "schedule.html";
else
alert("failed login");
location.href = "index.html";
,
error: function()
alert("error");
window.open('schedule.html');
);
PHP 文件:
<?php
include 'connect.php';
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS, REQUEST');
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Max-Age: 3628800');
$data = array();
$userMail = $_POST["userMail"];
$userPassword = $_POST["userPassword"];
$cryptpass = md5($userPassword);
$sql = "SELECT tr_adr_id FROM elo_users WHERE email = '" . $userMail . "' AND crypt = '" . $cryptpass . "'";
//mysql_real_escape_string($userMail),
//mysql_real_escape_string($cryptpass));
$result = mysqli_query($sql);
//if($data = mysql_fetch_array($result))
while($row = mysqli_fetch_array($result))
$data = $row['tr_adr_id'];
echo $data["tr_adr_id"];
mysqli_free_result($data);
mysqli_close();
?>
我尝试使用 POST 和 GET 进行 AJAX 调用,并在 PHP 文件中使用 $_POST、$_GET 和 $_REQUEST 进行 AJAX 调用,但这些对我没有任何作用...
提前感谢您!我仍在努力找出我的代码中有什么问题......
已编辑:
index.html:
<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=320" user-scalable="no" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<link rel="stylesheet" href="css/docs.min.css">
<link rel="stylesheet" href="css/jquery.mobile-1.4.3.min.css">
<link rel="stylesheet" href="css/general.css">
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/functions.js"></script>
<title>EegaApp</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
</head>
<body>
<script type="text/javascript" src="js/jquery.mobile-1.4.3.min.js"></script>
<div id="eegaLogo">
<img class="bottom" src="images/eega_logo_loading.jpg"/>
<img class="top" src="images/eega_logo.jpg"/>
</div>
<a href="http://www.eega.nl/" data-mini="true" style="color:red; position: absolute; margin-left:35%; margin-top:43.5%; text-decoration:none;">www.eega.nl</a>
<!--*********Login form********-->
<form id="loginForm" class="form-signin" role="form" style="width:50%; text-align: center; margin-top: 55%; margin-left: 25%;" method="post">
<input id="userMail" name="userMail" class="form-control" type="email" autofocus="" required="" placeholder="Email"></input>
<input id="userPassword" name="userPassword" class="form-control" type="password" required="" placeholder="Password"></input>
<div>
<input type="checkbox" name="checkbox-0" id="checkbox-mini-0" class="custom" data-mini="true" />
<label for="checkbox-mini-0">Remember me</label>
</div>
<button type="submit" data-mini="true" onClick="login()">Login</button>
</form>
<!--*********End form*********-->
<!--THIS LINE IS JUST FOR TEST-->
<a href="schedule.html">schedule</a>
<!--*********Footer*********-->
<div id="footer">
<script>
function openExternal(elem)
window.open(elem.href, "_system");
return false; // Prevent execution of the default onClick handler
</script>
<a class="col-xs-4" href="http://9292.nl/#" target="_blank" onClick="javascript:return openExternal(this)"><img id="footer-icon" src="images/9292_icon.jpg" style="width: 60px; height: 60px;"/></a>
<a class="col-xs-4" ><img id="footer-icon" src="images/maps_icon.jpg" style="width: 60px; height: 60px;"/></a>
<a class="col-xs-4" ><img id="footer-icon" src="images/call_icon2.jpg" style="width: 60px; height: 60px;"/></a>
</div>
<!--********End footer*********-->
</body>
【问题讨论】:
使用var_dump($data["tr_adr_id"])
来查看该变量中是否存在某些内容.. 因为我认为存在问题.. 您已经获得了子元素$data = $row['tr_adr_id'];
,然后在echo $data["tr_adr_id"];
再次迭代..我认为你应该只是echo $data;
好的!谢谢,我现在就试试!
您的 phonegap index.html 页面是什么样的?
我编辑了添加 index.html 的问题
【参考方案1】:
按照一切的布局方式,您做的事情对自己来说有点困难。以下是一些有助于您修复代码的示例。
注意 data: 的布局方式。请注意成功的布局。
$.ajax(
type: "GET",
url: "../ajax.php",
dataType: "json",
data:
type: "getLineComments",
saleId: $(this).attr('saleId'),
lineId: $(this).attr('lineId')
,
success: function (json)
$content.empty();
$content.slideToggle(500, function ()
if(json.Row !== undefined && json.Row.length > 0)
for(var i=0;i < json.Row.length;i++)
var item = json.Row[i];
//console.log(item);
//console.log(item.REMARK_LIN);
$content.append("<li>" + item.REMARK_LIN + "</li>");
else
if(json.Row !== undefined)
$content.append("<li>" + json.Row.REMARK_LIN + "</li>");
else
$content.append("<li>No Comments</li>");
$header.text(function ()
//change text based on condition
return $content.is(":visible") ? "Collapse Line Remarks" : "Expand Line Remarks";
);
);
,
error: function(e)
console.log(e);
);
还有一件事对你有很大帮助是使用 php 函数 json_encode - http://php.net/manual/en/function.json-encode.php
例如
echo json_encode(mysqli_fetch_array($result));
【讨论】:
非常感谢您的帮助!!最后我可以修复它。错误在查询中。我在 SELECT 中写入字段名称时出错。现在工作完美!! :)以上是关于使用 Phonegap、AJAX、PHP 和 mySQL 登录不工作的主要内容,如果未能解决你的问题,请参考以下文章
在Phonegap项目中结合Ajax、Jquery、mysql、php不起作用
使用 Ajax / JQuery / PhoneGap 重定向