繁体   English   中英

AJAX和HTML元素不起作用

[英]AJAX and HTML element not working

我试图设置一个div标签,以在数据库中找不到用户时显示一条消息。

这是我无法开始的工作:

$("message").html(msg);

如果您能帮助我了解我在做什么错,那将会有所帮助。 谢谢

$(document).ready(function(){
    $("#submit").click(function(){
        var username = $("#username").val();
        var code = $("#code").val();
        var msg = "Who are you?!";
        var dataString = 'username='+ username + '&code='+ code;
        localStorage.setItem("number",code);
        if(username==''||code=='')
        {
            alert("Um..you are missing something...");
        }
        else
        {
            $.ajax({
                type: "POST",
                url: "verify.php",
                data: dataString,
                cache: false,
                success: function(result){
                    if(result != 0)
                    alert(result);
                },
                error: function(){
                    $("message").html(msg);
                }
            });
        }
        return false;
    });
});

我的PHP代码

<?php
    $username = trim($_POST["username"]);
    $code = trim($_POST["code"]);

    include_once './inc/config.php';
    $con = new mysqli(HOST, USER, PASSWORD, DATABASE);

    $sql="SELECT * FROM info WHERE First_Name='".$username."' AND Line_Number='".$code."'" ;
    // Check connection
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $result = mysqli_query($con,$sql);
    $num_rows = mysqli_num_rows($result);

    if($num_rows != 0){
        echo true;
    }
    else{
        //echo "Who are you?!";
        return false;
    }
mysqli_free_result($result);
mysqli_close($con);

如果您的消息元素具有ID message ,请像这样选择它:

$("#message").html(msg);

如果它具有 message ,请像这样选择它:

$(".message").html(msg);

JQuery文档包含所有选择器类型的概述和深入描述。


另外,要触发Javascript中的error方法,服务器端代码需要发送HTTP错误代码,例如:

header("HTTP/1.1 404 Not Found");

或像这样:

http_response_code(404);

要使用ID消息定位div,请使用

$("#message")

您错过了#

尝试这个:

$.ajax({...
    success: function(data){
        if(data)
            $("#message").html (msg);
        else
            alert(data);
    }
});

message是类还是ID? 确保使用正确的选择器在其上显示输出。

  error: function(){
    $("message").html(msg);
  }

当找不到用户时,是否以404或2xx以外的其他方式响应? 而且,是的,选择器不正确。 仅在请求服务器期间HTTP错误的情况下才会调用您的函数。

这个

else{
    //echo "Who are you?!";
    return false;
}

不会运行您的功能。 这个

else{
    //echo "Who are you?!";
    header("HTTP/1.0 404 Not Found");
    exit;
}

可以做到,但不是很好的解决方案。 最好的办法就是退回这样的东西

$response = array('status' => 'failed', 'text' => 'Whatever');
header('Content-type: application/json');
echo json_encode($response);
exit;

然后在成功功能中处理数据,检查“状态”,依此类推。

将#用作ID和。 对于类错误:function(){$(“#message”)。html(msg);

除了message选择器中明显的错误外,我可以看到的另一个问题是您的代码在您的PHP中。

您的php代码不会返回错误条件,而是返回true或false,因此始终会调用成功回调。

所以

if($num_rows != 0){
    echo true;
}
else{
    //echo "Who are you?!";
    echo false;
}

然后

$.ajax({
    type: "POST",
    url: "verify.php",
    data: dataString,
    cache: false,
    success: function (result) {
        if (result) {
            alert(result);
        } else {
            alert(msg);
            //make sure you use a proper selector here
            $("message").html(msg);
        }
    },
    error: function () {
        $("message").html(msg);
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM