- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在为我的大学学位使用 html5、ajax、JSON 和 php 创建一个电话应用程序。此应用程序必须与 mysql 数据库通信,因此使用 ajax Json 与 php 文件通信,然后处理对数据库的查询。然后将使用 phonegap 云服务对其进行打包。
登录页面使用表单获取用户名和密码,jQuery 和 JSON 然后通过登录页面上的脚本将其传递给 login.php。我可以让 jQuery 工作到一定程度,但是一旦我对 php 文件执行 SQL 查询,登录似乎就会挂起。我通过手动将输入变量放入 php 并在浏览器中运行页面来测试 php 进程多次,效果很好。您可以在 mobile app login 处看到登录信息.
我目前正在使用 $.getJSON 从输入表单发送变量,但我更喜欢使用帖子,但不太清楚。也不像使用 form action post 那样我可以使用 echo outs 来确保 php 正在做它的工作我找不到如何允许我使用类似的方法来检查我的 php 进程,因为使用 jquery/JSON,任何指导将不胜感激.
以下是我的脚本,我已经尝试让它工作 3 天了,但似乎无法让它工作,即使我已经尝试了在许多论坛上找到的许多不同的脚本,任何帮助都会非常有用赞赏
jquery/JSON 脚本************************
$(document).ready(function() {
$("#submit").click(function() {
if($("#childs_name").val()=="" || $("#password").val()=="") {
$("#add_err").html("Please enter childsname and password");
return false;
}else{
$("#add_err").html('<img src="images/ajax-loader.gif" width="16" height="16" alt=""/>');
var childsname=$("#childs_name").val();
var password=$("#password").val();
$.getJSON("includes/login.php",{username:childsname,password:password},function(json) {
//Parse JSON data if json.response.error = 1 then login successfull
if(json.response.error == "1")
{
$("#add_err").html( "Welcome "+childsname+"");
//login successfull, write code to Show next page here
window.location= "menu.html";
}else
if(json.response.error == "2")
{
$("#add_err").html( "Details do not exsist in Database. Please contact the School");
}
});//get json
}
});//submit click
});//doc ready
PHP ***********************************
//include_once 'db_connect.php';
if(!isset($_GET['submit'])) {
//check if childsname is empty
if(empty($_GET['childsname'])) {
echo '{"responce":{"error": "1"}}';
}else{
$childs_name = $_GET['childsname'];
echo '{"responce":{"error": "0"}}';
}//end of chidsname
//check if password is empty
if(empty($_GET['password'])) {
echo '{"responce":{"error": "1"}}';
}else{
$password = $_GET['password'];
echo '{"responce":{"error": "0"}}';
}//end of password
//query database
$query = "SELECT * FROM app Where child_name = '$childs_name'";
$results = mysqli_query($mysqli, $query);
// Loop through results
// if($result->num_rows >= 1){
// $row = $result->fetch_array(MYSQLI_ASSOC);
// if ($row['childs_name'] = '$childs_name'){
//
while ($row = mysqli_fetch_array($results, MYSQLI_BOTH)){
if($_GET['childsname'] == $row['child_name']) {
echo '{"responce":{"error": "1"}}';
// header("Location: ../menu.html");
}else{
echo '{"responce":{"error": "2"}}';
}
}
//**************************************************************submit
echo '{"response":{"error": "1"}}';
}
else
{
echo '{"response":{"error": "0"}}';
}
我的表单 HTML **********************************
<body class="body">
<div id="logo"></div>
<div class="loginForm">
<form id="login" name="login" method="post" action="includes/login.php">
<input name="childs_name" type="text" id="childs_name" form="login" placeholder="Childs Name">
<input name="password" type="password" id="password" form="login" placeholder="Password">
<input name="submit" class="submit" type="button" id="submit" formaction=""value="Submit">
<input name="reset" type="reset" id="reset" form="login" value="Reset">
<div id ="add_err" class="add_err"></div>
</form>
</div>
<div class="l-a"></div>
<div class="tagLine">Little minds with big ideas</div>
</body><!--body-->
</html>
jQuery 和 JSON 对我来说是新的,所以我希望我的代码是可疑的,我遗漏了一些简单的东西,我也希望我已经提供了足够的信息来提供帮助,以防万一有人认为我已经放入了太多代码然后我只想提供我认为需要的尽可能多的信息
最佳答案
首先更新您的 php 文件:1.取消注释
//include_once 'db_connect.php';
在这一行之后添加这一行:
header('Content-Type: application/json'); //this one will tell the server to send a json object back to client (by default it sends text/html)
不要使用 echo 'something';。而是像这样在 $result 变量中获取结果:
$result = array ( 'response' => array('status'=>'error', 'message' => 'password is missing')); //this is just an example for the missing password line
在脚本末尾使用这个:
echo json_encode($result);
exit();
附言将 PHP 脚本中的“响应”替换为“响应”。
这是您的 PHP 文件的外观:
<?php
include_once 'db_connect.php';
//Start the session if is not started it
//You need it to store here the user's name when he successfully logs in
if (!isset(session_id())) {
session_start();
}
header("Content-Type: application/json"); //this will tell the browser to send a json object back to client not text/html (as default)
// This function will convert your variable (array) into a JSON object
function result($var){
echo json_encode($var);
exit();
}
if(!isset($_GET['submit'])) {
//check if childsname is empty
if(empty($_GET['childsname'])) {
$response = array('result'=>'fail', 'message' => 'missing childsname');
result($response);
}else{
//Always escape your variables before using them in a database
//I assumed $mysqli is your database connector
$childs_name = mysqli_real_escape_string($mysqli, $_GET['childsname']);
}
//check if password is empty
if(empty($_GET['password'])) {
$response = array('result'=>'fail', 'message' => 'missing password');
result($response);
}else{
//Always escape your variables before using them in a database
$password = mysqli_real_escape_string($mysqli, $_GET['password']);
}
// Query database
$query = "SELECT * FROM app WHERE `child_name` = '$childs_name'"; // You also need to add: AND `password_column_name` = '$password' LIMIT 1
$results = mysqli_query($mysqli, $query);
// Check if SQL query had erors
if (!$results){
$response = array('result'=>'fail', 'message' => 'sql error: ' . mysqli_error($mysqli));
result($response);
}
// If query was successfull and there are rows do this:
if (mysqli_num_rows($results)>0){
$_SESSION['username'] = $childs_name;
//You may use this variable to check if the user is logged in like this:
/*
if (isset($_SESSION['username'])) {
// user is logged in
// do something here
}
*/
$response = array('result'=>'success', 'message' => 'user is authenticated'));
result($response);
} else {
$response = array('result'=>'fail', 'message' => 'user authentication failed');
result($response);
}
?>
用这个替换你的 JavaScript 代码中的 getJSON 部分
$.getJSON("includes/login.php",{username:childsname,password:password},function(json) {
if(json.result === "success") {
$("#add_err").html( "Welcome "+childsname+"!");
//you should redirect to a php page, not a html one AND on that page you should have a session started ( session_start(); )
// and there you should check if :
/*
if (isset($_SESSION['username'])) {
// user is logged in
// do something here
} else {
//redirect the user back on this page(login_page)
}
*/
//wait two seconds before redirect, otherwise you say 'Welcome kiddo' for nothing because no one will ever see it :)
setTimeout(function(){
window.location= "menu.html";
},2000);
}else{
$("#add_err").html(json.message);
}
});
稍后更新以解释 php 中的 $response 数组:
//$response here is an PHP array with the following structure
$response = array('result'=>'fail',
'message' => 'missing password');
当你打电话时
结果($响应);
此数组转换为具有以下结构的 JSON 对象:
{
"response":"fail",
"message": "missing password"
}
因为 result() 函数中的最后一条指令是 exit(); 脚本执行结束,结果在您的 getJSON 函数中返回给客户端。
关于javascript - Ajax/JSON请求到php处理页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29168330/
对于 Metal ,如果对主纹理进行 mipmap 处理,是否还需要对多采样纹理进行 mipmap 处理?我阅读了苹果文档,但没有得到任何相关信息。 最佳答案 Mipmapping 适用于您将从中
我正在使用的代码在后端 Groovy 代码中具有呈现 GSP(Groovy 服务器页面)的 Controller 。对于前端,我们使用 React-router v4 来处理路由。我遇到的问题是,通过
我们正在 build 一个巨大的网站。我们正在考虑是在服务器端(ASP .Net)还是在客户端进行 HTML 处理。 例如,我们有 HTML 文件,其作用类似于用于生成选项卡的模板。服务器端获取 HT
我正在尝试将图像加载到 void setup() 中的数组中,但是当我这样做时出现此错误:“类型不匹配,'processing .core.PImage' does not匹配“processing.
我正在尝试使用其私有(private)应用程序更新 Shopify 上的客户标签。我用 postman 尝试过,一切正常,但通过 AJAX,它带我成功回调而不是错误,但成功后我得到了身份验证链接,而不
如何更改我的 Processing appIconTest.exe 导出的默认图标在窗口中的应用程序? 默认一个: 最佳答案 经过一些研究,我能找到的最简单的解决方案是: 进入 ...\process
我在 Processing 中做了一个简单的小游戏,但需要一些帮助。我有一个 mp3,想将它添加到我的应用程序中,以便在后台循环运行。 这可能吗?非常感谢。 最佳答案 您可以使用声音库。处理已经自带
我有几个这样创建的按钮: 在 setup() PImage[] imgs1 = {loadImage("AREA1_1.png"),loadImage("AREA1_2.png"),loadImage
我正在尝试使用 Processing 创建一个多人游戏,但无法弄清楚如何将屏幕分成两个以显示玩家的不同情况? 就像在 c# 中一样,我们有Viewport leftViewport,rightView
我一直在尝试使用 Moore 邻域在处理过程中创建元胞自动机,到目前为止非常成功。我已经设法使基本系统正常工作,现在我希望通过添加不同的功能来使用它。现在,我检查细胞是否存活。如果是,我使用 fill
有没有办法用 JavaScript 代码检查资源使用情况?我可以检查脚本的 RAM 使用情况和 CPU 使用情况吗? 由于做某事有多种方法,我可能会使用不同的方法编写代码,并将其保存为两个不同的文件,
我想弄清楚如何处理这样的列表: [ [[4,6,7], [1,2,4,6]] , [[10,4,2,4], [1]] ] 这是一个整数列表的列表 我希望我的函数将此列表作为输入并返回列表中没有重复的整
有没有办法在不需要时处理 MethodChannel/EventChannel ?我问是因为我想为对象创建多个方法/事件 channel 。 例子: class Call { ... fields
我有一个关于在 Python3 中处理 ConnectionResetError 的问题。这通常发生在我使用 urllib.request.Request 函数时。我想知道如果我们遇到这样的错误是否可
我一直在努力解决这个问题几个小时,但无济于事。代码很简单,一个弹跳球(粒子)。将粒子的速度初始化为 (0, 0) 将使其保持上下弹跳。将粒子的初始化速度更改为 (0, 0.01) 或任何十进制浮点数都
我把自己弄得一团糟。 我想在我的系统中添加 python3.6 所以我决定在我的 Ubuntu 19.10 中卸载现有的。但是现在每次我想安装一些东西我都会得到这样的错误: dpkg: error w
我正在努力解决 Rpart 包中的 NA 功能。我得到了以下数据框(下面的代码) Outcome VarA VarB 1 1 1 0 2 1 1 1
我将 Java 与 JSF 一起使用,这是 Glassfish 3 容器。 在我的 Web 应用程序中,我试图实现一个文件(图像)管理系统。 我有一个 config.properties我从中读取上传
所以我一直在Processing工作几个星期以来,虽然我没有编程经验,但我已经转向更复杂的项目。我正在编写一个进化模拟器,它会产生具有随机属性的生物。 最终,我将添加复制,但现在这些生物只是在屏幕上漂
有人知道 Delphi 2009 对“with”的处理有什么不同吗? 我昨天解决了一个问题,只是将“with”解构为完整引用,如“with Datamodule、Dataset、MainForm”。
我是一名优秀的程序员,十分优秀!