这是我的AJAX代码:
$("#loginbutton").click(function(){
var email = $('#email').val();
var password = $('#password').val();
$.ajax({
url: 'login.php',
type: 'POST',
dataType: 'json',
data: { email:email, password:password},
success: function(data){
$("#samplediv").innerHTML ="Welcome";
}
});
});
这是我的PHP:
<?php
session_start();
$conn = mysqli_connect("localhost", "root", "", "getpet");
if(isset($_POST['email'])){
echo $_POST['email'];
}
?>
你可以看到它将是一个登录系统,但是php没有写出$_POST['email']
变量。我认为这可能是一个语法错误,只是我太盲目了。如果有人可以帮助我,我将非常感激。
更新: 这是我的整个PHP代码,我认为它不相关,但这是有原因的,为什么我使用dataType:json。
<?php
session_start();
$conn = mysqli_connect("localhost", "root", "", "getpet");
if(isset($_POST['email'])){
echo $_POST['email'];
}/*
$results = array(
'success' => false,
'user_id' => "azaz",
'fname' => "",
'lname' => ""
);
if(!empty($_POST['email']) && !empty($_POST['password'])){
$email = $_POST['email'];
$password = md5($_POST['password']);
$sql= "SELECT * FROM users WHERE email = '$email' AND password = '$password'";
$rowsql = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($rowsql, MYSQLI_BOTH);
if(mysqli_num_rows($rowsql) == "1"){
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['fname'] = $row['fname'];
$_SESSION['lname'] = $row['lname'];
$results['success'] = true;
$results['user_id'] = $row['user_id'];
$results['fname'] = $row['fname'];
$results['lname'] = $row['lname'];
}
}
//echo json_encode($results);*/
?>
答案 0 :(得分:2)
在您的数据对象中,您的键不是字符串,而是您定义的变量。这样做是为了让字面意思email
和password
:
data: { 'email':email, 'password':password},
答案 1 :(得分:0)
我认为这是一个跨文本的问题,但正常情况下这会在控制台中显示出来。将错误输出附加到您的json并查找它,如果它是一个php错误,您现在会被注意到。
$.ajax({
url: 'login.php',
type: 'POST',
dataType: 'json',
data: { email:email, password:password},
success: function(data){
$("#samplediv").innerHTML ="Welcome";
},
error: function (jqXHR, textStatus, errorThrown) {{
console.error('ajax response failed');
console.log(jqXHR.responseText);
}
});
答案 2 :(得分:0)
- &GT;确保你调用jQuery :) - &GT;添加文件准备好了 - &GT;添加防止默认 - &GT;使用输入而不是按钮只是我的便利
<script type="text/javascript">
$(document).ready( function() { /* only when everything is set up */
$("#loginbutton").click(function(e){
e.preventDefault();
var email = $('#email').val();
var password = $('#password').val();
$.ajax({
url: "login.php",
method: "POST", /* changed to `method` */
data: "email="+email+"&password="+password, /* MODIFIED */
success: function(data){
alert(data);
$("#samplediv").html("Welcome !");
},
error: function (request, status, error) { /* added error handling */
alert(request.responseText);
}
});
});
});
</script>
<div id="samplediv"></div>
<form action="#" id="form" method="post">
<p><input type="text" name="email" id="email" value="" /> email</p>
<p><input type="text" name="password" id="password" value="" /> pwd</p>
<input type="submit" id="loginbutton" value="GO" />
</form>
当然,输入password
类型!
由于我不知道你为什么用DB连接(可能选择?),我只是把php文件简单化了,如下:
<?php
/* login.php */
error_reporting(E_ALL); ini_set('display_errors', 1);
$email = $_POST['email'];
$pwd = $_POST['password'];
echo"[ email > $email / pwd : $pwd ]"; /* for example only, of course, not with real credentials */
?>
编辑原始问题后,我看到了PHP代码,我建议
不再使用MD5,而是使用password_hash / password_verify
你应该真的考虑使用PPS : Prepared Parameterized Statements。这将有助于Preventing SQL injection
答案 3 :(得分:0)
$("#samplediv").innerHTML ="Welcome";
错了
这里有一个jquery元素,并尝试使用vanilla函数进行访问。
$("#samplediv").text("Welcome");
// or
$("#samplediv")[0].innerHTML = "Welcome";
如果您打开浏览器开发工具,它应该显示错误:
innerHTML不是...的功能