AJAX Get不是't工作

AJAX Get isn't working

本文关键字:工作 Get 不是 AJAX      更新时间:2023-09-26

我正试图用AJAX从mysql服务器中提取数据。这是AJAX调用:

function getAllTasks()
        {
            alert("Getting all tasks");
            $.ajax({
              type: "get",
              url: "ajax.php",
              dataType: "json",
              data: data,
              async: false,
              success: function(data){
                   alert('hi!');
                   //perform operation
                },
                error: function() {
                  alert('Error occurs!');
                }
            });
        }

这就是它应该运行的PHP:

header('Content-Type: application/json');

$conn = new mysqli('localhost', 'projectAdmin', 'admin', 'to_do_list')
    or die('Error connection to database');
    getAllTasks($conn);


function getAllTasks($conn)
{
$query = "SELECT * FROM tasks WHERE ID=1";
$result = mysqli_query($conn, $query);
while($row = $result->fetch_assoc())
{
    $tasks[] = $row;
}
echo json_encode($tasks);
}

它不起作用。当我单独运行PHP时,它运行良好,并在浏览器中返回一个JSON字符串(chrome)。当我运行AJAX时,什么都不会发生。我收到了"获取所有任务"的警报,然后它就不起作用了。AJAX是从$(document).ready()函数调用的。

我不知道哪里出了问题,我在这里看了很多帖子,我的AJAX代码看起来几乎一模一样。json_encode有问题吗?AJAX?请帮帮我。

此处:

data: data,

看起来data变量未定义。此外,我建议您删除async: false选项,以便发出异步请求,而不是阻塞UI。

在浏览器中查看Console也可能会发现代码中的一些潜在问题。

var xhr = new XMLHttpRequest();
xhr.open("GET", "ajax.php");
xhr.addEventListener("readystatechange", function(ev) {
    var xhr = ev.target;
    if (xhr.readyState < 4) { /*not finished downloading yet.*/
        return;
    }
    /*the request is completed. do your stuff with xhr.responseText here.*/
    console.log(xhr);
});
xhr.send();