gpt4 book ai didi

javascript - Ajax/JSON请求到php处理页面

转载 作者:可可西里 更新时间:2023-11-01 01:00:19 24 4
gpt4 key购买 nike

我正在为我的大学学位使用 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';
  1. 在这一行之后添加这一行:

    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)
  2. 不要使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com