Javascript 使用AJAX onclick函数返回PHP Mysql查询

Javascript 使用AJAX onclick函数返回PHP Mysql查询,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,所以,在过去的几天里,我一直在寻找各种来源来回答我的问题,因此没有发现对我有用的东西。我将在前面进一步说明,关于PHP和Javascript,我是一周前开始学习的。我也明白,可能会有更好的方法来格式化/编写我将要发布的代码,所以请耐心听我说!) 从本质上讲,我试图将页面名play.php与AJAX结合使用,将MYSQL查询回传到特定页面元素内的页面上 因此main.js的代码直接链接到play.php。我试过三种不同的方法,我在不同的答案中看到过,但没有得到我想要的信息。我要么没有得到回应,要么

所以,在过去的几天里,我一直在寻找各种来源来回答我的问题,因此没有发现对我有用的东西。我将在前面进一步说明,关于PHP和Javascript,我是一周前开始学习的。我也明白,可能会有更好的方法来格式化/编写我将要发布的代码,所以请耐心听我说!)

从本质上讲,我试图将页面名play.php与AJAX结合使用,将MYSQL查询回传到特定页面元素内的页面上

因此main.js的代码直接链接到play.php。我试过三种不同的方法,我在不同的答案中看到过,但没有得到我想要的信息。我要么没有得到回应,要么在所有这些问题上都没有定义

    function selectChar(uname, cname) 
{   
    var data = {
        username : uname,
        charname : cname
    };
    $.ajax({
        data : data,
        type : 'Get',
        url : 'start.php',
        dataType:"json",
        success : function (result) { 
        var data_character = JSON.parse(result);
        var cnamediv = document.getElementById('charactername');
        cnamediv.innerHTML = "";
        cnamediv.innerHTML = data_character[0].name;
        }
    }); 
}
上面的那个我最常看到,下面的那个我今天早些时候才发现。我试图调用数组时未定义

function selectChar(uname, cname) 
{
    $.get("start.php?username="+uname+"&charname="+cname).done(function(data_character){
        var cnamediv = document.getElementById('charactername');
        cnamediv.innerHTML = "";
        cnamediv.innerHTML = data_character[0].name;
    });
}
最后是查询数据库并回显数据的PHP代码

<?php
    $conn = new mysqli($hostname,$username,$dbpassword, $dbname);

    if(!$conn) {
        die('Could not connect: ' . mysql_error());
    }

    $username = $_GET['username'];
    $charname = $_GET['charname'];

    $sql = "SELECT `id`, `username` FROM `users` WHERE `username` ='$username'";
    $result = mysqli_query($conn,$sql);

    //Send the array back as a JSON object
    echo json_encode($result);
?>
试试这个:

php get post并返回
json\u encode
    if(!$conn) {
        die('Could not connect: ' . mysql_error());
    }

    $username = $_POST['username'];
    $charname = $_POST['charname'];

    $sql = "SELECT `id`, `username` FROM `users` WHERE `username` ='$username'";
    $result = mysqli_query($conn,$sql);
    $rows = array();
    while($r = mysqli_fetch_assoc($result)) {
     $rows[] = $r;
     }
    //Send the array back as a JSON object
    echo json_encode($rows);
?>
jsajax响应和请求

 $.ajax({
        data : data,
        type : 'POST',
        url : 'start.php',
        dataType:"json",
        success : function (result) { 
        console.log(result);
        document.getElementById('charactername').innerHTML = result[0].username;
        }
    }); 

嘿,Logan,问题可能在于AJAX请求的发送方式。尝试将processData属性添加到请求中,并将其设置为false。这只是意味着数据不会作为查询字符串读取,而是作为原始数据读取

$.ajax({
        data : data,
        type : 'POST',
        url : 'start.php',
        dataType:"json",
        processData: false,
        success : function (result) { 
        console.log(result);
        document.getElementById('charactername').innerHTML = result[0].username;
        }
    }); 
我还将尝试echo json_encode($_POST),以查看是否返回以下响应:

{username: "hello", charname: "hl"}

首先,您的第一个AJAX方法是
POST
,但您在PHP代码中使用了
$\u GET
。如果您正在使用
POST
发送数据,那么您应该使用
$\u POST
来检索数据。很抱歉,大约五分钟前,我在查看其他线程的一篇文章时更改了它。如果您阅读了一篇关于在PHP中执行SQL查询的教程,您会发现您必须进行“获取”调用以从数据库中获取结果行。mysqli文档中也有一些例子。@Barmar我知道如何对数据库结果进行获取调用,但到目前为止它对我没有任何作用。我尝试在.php和.js文件之间更改各种内容以缩小差距。即使在将获取的数据分配给变量并尝试对其进行json_编码和回显之后,我也无法检索到除未定义之外的任何内容。@Barmar教程需要太多的阅读,我想自己找出答案,并且无意中想在代码中添加SQL注入可能性。只是因为我想与外界共享我数据库的内容。不幸的是,它似乎无法检索数据!我不确定失败的原因:(在ajax响应中,添加
console.log(result);
,并更改此
result[0]。name;
用于此
result[0].username;
我最终找到了答案!我的其他ajax请求成功了,但无论出于何种原因,直到我将url更改为更具体的url,其中一个请求才成功。但奇怪的是,它们都在同一个文件夹中,其他ajax请求不需要更具体的url即可工作。不过,当我解决了URL问题!谢谢!我终于解决了!我的其他ajax请求成功了,但无论出于何种原因,只有在我将URL更改为更具体的URL后,其中一个请求才成功。但奇怪的是,它们都在同一个文件夹中,其他ajax请求不需要更具体的URL即可工作。无论如何,感谢您的光临!)