Javascript Ajax Post请求不工作

Javascript Ajax Post请求不工作,javascript,jquery,ajax,Javascript,Jquery,Ajax,您好,我已经创建了一个使用ajax方法登录的脚本,我尝试过了,但是这对我来说不起作用。失败了。您能告诉我为什么我不能使用这个方法吗 function login() { var username = document.getElementById('username').value; var pass = document.getElementById('pass').value; if(username == '' && pass == '') { alert

您好,我已经创建了一个使用ajax方法登录的脚本,我尝试过了,但是这对我来说不起作用。失败了。您能告诉我为什么我不能使用这个方法吗

function login() {
var username = document.getElementById('username').value;
var pass     = document.getElementById('pass').value;

if(username == '' && pass == '') {
    alert('Fields could not be left empty');
} else {
    $.ajax({
        type     : "POST",
        url      : "includes/register.php",
        data     : "command=login&username="+username+"&password="+pass,
        datatype : "json",
        success  :  function(data) {
            if (data.status == 200) {
                alert('Successfull');
                var return_data = data.responseText;
                document.getElementById('messagearea').innerHTML = return_data;
            } else {
                alert('Unsuccessful');
            }
        }
    });
}
}
它应该运行alert successful,但我收到alert('successful')。这意味着状态不等于200。有人能帮我解决这个问题吗

这是我的php代码

if(isset($_POST['command']) && $_POST['command'] == 'login') {
    $username = $_POST['username'];
    $pass     = $_POST['pass'];
    $password = md5($pass);

    $check  = mysqli_query($connection, "SELECT * FROM users WHERE username = '$username'");
    $result = mysqli_num_rows($check);
    if($result != 1) {
        echo "<div class='message'>Response Successful</div>";
    } else {
        echo "<div class='message'>Username/Password did not matched</div>";
    }
}
if(设置($\u POST['command'])&&&$\u POST['command']=='login')){
$username=$_POST['username'];
$pass=$_POST['pass'];
$password=md5($pass);
$check=mysqli_query($connection,“SELECT*FROM username='$username');
$result=mysqli\u num\u行($check);
如果($result!=1){
回应“反应成功”;
}否则{
echo“用户名/密码不匹配”;
}
}

数据类型中的
T
应为大写

$.ajax({
      type: "POST",
      url: "includes/register.php",
      data: "command=login&username=" + username + "&password=" + pass,
      dataType: "json",
根据服务器代码,您的数据应该如下所示

data: "command=login&username=" + username + "&pass=" + pass,
像这样更改成功处理程序中的代码

document.getElementById('messagearea').innerHTML = data;

数据类型中的
T
应为大写

$.ajax({
      type: "POST",
      url: "includes/register.php",
      data: "command=login&username=" + username + "&password=" + pass,
      dataType: "json",
根据服务器代码,您的数据应该如下所示

data: "command=login&username=" + username + "&pass=" + pass,
像这样更改成功处理程序中的代码

document.getElementById('messagearea').innerHTML = data;

如果要检查xhr请求状态,应在
成功功能中使用3个参数

success  :  function(data,text,xhr) {
            if (xhr.status == 200) {
                alert('Successfull');
                var return_data = data;
                document.getElementById('messagearea').innerHTML = return_data;
            } else {
                alert('Unsuccessful');
            }
        }
对于数据类型:“json”

if(设置($\u POST['command'])&&&$\u POST['command']=='login')){
$username=$_POST['username'];
$pass=$_POST['pass'];
$password=md5($pass);
$check=mysqli_query($connection,“SELECT*FROM username='$username');
$result=mysqli\u num\u行($check);
如果($result!=1){
echo json_编码(“响应成功”);
}否则{
echo json_编码(“用户名/密码不匹配”);
}
}

如果要检查xhr请求状态,应在
成功功能中使用3个参数

success  :  function(data,text,xhr) {
            if (xhr.status == 200) {
                alert('Successfull');
                var return_data = data;
                document.getElementById('messagearea').innerHTML = return_data;
            } else {
                alert('Unsuccessful');
            }
        }
对于数据类型:“json”

if(设置($\u POST['command'])&&&$\u POST['command']=='login')){
$username=$_POST['username'];
$pass=$_POST['pass'];
$password=md5($pass);
$check=mysqli_query($connection,“SELECT*FROM username='$username');
$result=mysqli\u num\u行($check);
如果($result!=1){
echo json_编码(“响应成功”);
}否则{
echo json_编码(“用户名/密码不匹配”);
}
}

您可以尝试以下解决方案:

$.ajax({
    type: "POST",
    url: "includes/register.php",
    data: {command: "login", username: username, password: pwd},
    dataType: "json",
不要在jQuery脚本中使用“pass”,因为有时候它不能正常工作


再见D

您可以尝试以下解决方案:

$.ajax({
    type: "POST",
    url: "includes/register.php",
    data: {command: "login", username: username, password: pwd},
    dataType: "json",
不要在jQuery脚本中使用“pass”,因为有时候它不能正常工作


再见D

您需要在ajax成功函数中再添加两个对象,这将帮助您获得请求的更多信息

$.ajax({
    type     : "POST",
    url      : "register.php",
    data     : "command=login&username="+username+"&password="+pass,
    datatype : "json",
    success  :  function(data,xhr,req) {
        if (req.status == 200) {
            alert('Successfull');
            var return_data = data.responseText;
            document.getElementById('messagearea').innerHTML = return_data;
        } else {
            alert('Unsuccessful');
        }
    }
});
您还需要将返回数据编码为JSON,以便您的请求返回类型与JSON匹配。如果您通过开发人员工具baar仔细查看ajax请求,您将看到在您的请求中还有两个包含不同内容的对象返回

  • 包含数据
  • 包含成功或失败的请求
  • 数组中包含不同的对象

  • 您需要在ajax成功函数中再添加两个对象,这将帮助您获得请求的更多信息

    $.ajax({
        type     : "POST",
        url      : "register.php",
        data     : "command=login&username="+username+"&password="+pass,
        datatype : "json",
        success  :  function(data,xhr,req) {
            if (req.status == 200) {
                alert('Successfull');
                var return_data = data.responseText;
                document.getElementById('messagearea').innerHTML = return_data;
            } else {
                alert('Unsuccessful');
            }
        }
    });
    
    您还需要将返回数据编码为JSON,以便您的请求返回类型与JSON匹配。如果您通过开发人员工具baar仔细查看ajax请求,您将看到在您的请求中还有两个包含不同内容的对象返回

  • 包含数据
  • 包含成功或失败的请求
  • 数组中包含不同的对象


  • 发布你的
    register.php
    code问题在于php,你能把它包括进来吗?它返回的内容请检查帖子你应该
    json\u encode
    ,然后再回复。如果你想返回html,你应该将数据类型改为html而不是jsonPost你的
    register.php
    code问题在于php,你可以包含它吗?它返回的内容请检查POST你应该
    json\u encode
    ,然后再回显。如果要返回html,则应将数据类型更改为html而不是jsoncheck网络选项卡,查看服务器返回的内容我检查了控制台以查找错误,但控制台已清除,如果我使用小写字母t写入数据类型,则警报正常then@MarkAlan更改如下数据:“command=login&username=”+username+“&pass=“+pass,很好,它工作了,但是得到了这个结果。为什么控制台如此不确定。在success中记录(数据)并查看返回的内容检查网络选项卡,查看服务器返回的内容我检查了控制台以查找错误,但控制台是清晰的,如果我用小写的t写入数据类型,则警报正在工作then@MarkAlan更改如下数据:“command=login&username=“+username+”&pass=“+pass,很好,它工作了,但是得到了这个结果。为什么控制台如此不精确。在success中记录(数据)并查看返回的内容xhr和text是变量?我应该创建它们还是已经定义了它们?让我检查一下这个已经定义好了!您应该通过console.log检查它们出来的是什么这里是我得到的响应Alert('successful')UnfinedThumbs向您提供matexhr和text是变量我应该创建它们还是已经定义了它们?让我检查一下这个已经定义好了!你应该通过console.log来检查它们的结果这里是我得到的响应警报('successful')UnfinedThumbs为你matedataType:“json”,当我像这样写警报工作数据类型:“json”,为什么会这样?数据类型:“json”,当我像这样写警报工作数据类型:“json”,为什么会这样?