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

时间:2017-02-14 22:07:45

标签: javascript php mysql ajax

所以,我过去几天一直在寻找各种来源回答我的问题,因此没有发现任何对我有用的东西。我将进一步说明,关于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);
?>

我不是在找人为我工作,但我确实需要一些指导。什么是使这项工作适当的方法?我的代码非常错误吗?我完全错过了这方面的一个方面吗?拜托,我真的非常感谢有人能给我的任何帮助!

P.S。我刚刚完成了几个其他类似问题的审查,但这些问题似乎都没有帮助。对于什么对他们起作用或者当我尝试它时解决方案没有起作用时,或者从来没有确凿的结果。

2 个答案:

答案 0 :(得分:2)

试试这个:
php获取发布并返回json_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);
?>

JS ajax响应和请求

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

答案 1 :(得分:0)

嘿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"}