所以,我过去几天一直在寻找各种来源回答我的问题,因此没有发现任何对我有用的东西。我将进一步说明,关于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。我刚刚完成了几个其他类似问题的审查,但这些问题似乎都没有帮助。对于什么对他们起作用或者当我尝试它时解决方案没有起作用时,或者从来没有确凿的结果。
答案 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"}