更新:此问题的第一部分已经解决,并已在下面使用工作代码进行了更新。 〜
我正在开发一个Javascript应用程序,而且我很难获得AJAX调用。
我可以使用AJAX POST& amp;成功地将数据插入到我的数据库中。 PHP,但我似乎无法从数据库中提取数据。
我有一个使用图片的Javascript应用程序,目前它从根文件夹中的某个位置获取此图像,如下所示:
img.src = 'picture1.jpg';
我想在每次加载Javascript应用程序时从数据库中的表中选择一个随机图像,而不是这样做。
我创建了一个包含单个列的表,并使用我的根目录中的文件夹中包含的图像的地址/位置填充它。
例如:
/images/00001.jpg
/images/00002.jpg
/images/00003.jpg
这是PHP文件(位于/scripts/imagerandomizer.php)我用来调用随机图像地址:
<?php
session_start();
$servername = "localhost";
$username = "myusername";
$password = "mypassword";
$dbname = "mydatabase";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sqlrandomize = mysqli_query($conn,"SELECT images FROM `images` ORDER BY RAND( ) LIMIT 0 , 1");
$row = mysqli_fetch_row($sqlrandomize);
header('Content-Type: application/json');
echo json_encode($row);
mysqli_close($conn);
?>
启动PHP&amp;的AJAX听取回声:
function getRandomImage() {
$.ajax({
url: 'scripts/imagerandomizer.php',
data: "",
dataType: 'json',
success: function(response){
alert(response);
}});
};
我正在尝试使用 alert(数据); 让随机选择的图像位置/地址显示在警告框中(只是为了查看它是否正常工作)。但它不适合我,我很确定我在某个地方犯了错误,我不确定json
是否是正确的数据类型?
我希望返回的地址替换当前的img.src = 'image.jpg';
,这样当Javascript应用程序启动时,它将从代码的img.src =
部分接收随机图像。
感谢您提供任何帮助!
更新
Javascript现在可以在每次加载时正确显示随机地址(使用“alert”或“console.log”)。我的问题的最后一部分涉及如何让.js文件读取此字符串,并将其用作随后获取的图像的位置。
这就是我的游戏设置方式:
我有一个名为“game.js”的文件,它包含游戏运行所需的代码,现在,该代码的一部分是:img.src = 'images/image00001.jpg';
此时图像是永久定义的,不会改变。我试图用随机的定义替换这个静态定义。基本上我试图让每个game.js加载时img.src =
之后出现随机化地址。
我还需要确保此事件发生在game.js代码的其余部分之前,因为我需要随机选择的图像文件在游戏的其余部分加载之前就位。
我已经尝试通过在game.js文件顶部的AJAX调用中包含img.src=(response)
来定义img.src,但它无法将任何图像加载到游戏中。我想这可能是错误的做法吗?
第二次更新
你好@PHPGlue 我一直试图让这个工作几天,但我仍然缺少一些东西。
这是我获取随机图像的功能,我试图将代码放在成功函数if (img.src) {//code to run the game here}
中运行游戏:
Function getRandomImage() {
$.ajax({
url: 'scripts/imagerandomizer.php',
data: "",
dataType: 'json',
success: function(response){
$('#imageId').attr('src', data.image);
img.src = $('#imageId');
if (img.src) {
//code to run the game here
}
}});
};
我肯定在这里遗漏了一些东西,我想我并不理解你的意思。我真的很感激任何建议,并再次感谢您花时间看我的问题!
第三次更新
嗨,我目前的代码是:
function getRandomImg(gameFunc){
$.post('scripts/imagerandomizer.php', {randImg:1}, function(data){
var im = $('#imageId');
im.attr('src', data.image);
im.load(function(){
gameFunc(img.src=im);
}
}, 'json');
}
getRandomImg(function(){
javascriptgame();
});
function javascriptgame(){
//in this area I’ve placed all the code to make the game work
}
当您说/* pass args to gameFunc here */
时,我输入img.src=im
。 (我不确定我是否正确理解你,但我认为我应该定义游戏的img.src=
以便在这一行中进行调用?
当你说// game code here - could also pass function name instead of Anonymous function
时,我创建了一个名为javascriptgame
的新函数,在其中我放置了游戏的代码,然后在这一行调用了这个函数。我不确定这对你来说意味着什么?
不幸的是现在仍然没有图像加载到游戏中,我想再次感谢你花时间帮助我,如果你能提供更多的建议,那将是非常棒的!非常感谢。
答案 0 :(得分:0)
问题在于你的mysqli_query() 应该是这样的 mysqli_query(连接,查询,resultmode) 需要连接和查询的地方,resultmode是可选的。
实施例:
mysqli_query($ conn,&#34; SELECT images FROM images
ORDER BY RAND()LIMIT 0,1&#34;);
有关详细信息,请查看 mysqli_query
答案 1 :(得分:0)
首先,你应该建立一个单独的安全PHP连接页面
// connection.php
<?php
function db(){
return new mysqli('host', 'username', 'password', 'database');
}
?>
你的问题是你实际上只是通过查询得到任何结果。您仍然需要获取查询结果并在代码中使用它们:
<?php
include 'connection.php'; $db = db(); $r = array();
if(isset($_POST['randImg'])){
if(+$_POST['randImg'] === 1){
if($iq = $db->query('SELECT images image FROM images ORDER BY RAND() LIMIT 1')){
if($iq->num_rows > 0){
$fi = $iq->fetch_object(); $r['image'] = $fi->image;
}
else{
// no results were found
}
$iq->free();
}
else{
// connection failure
}
}
else{
// randImg hack
}
}
echo json_encode($r);
$db->close();
?>
在data.image
函数中以success
的形式在JavaScript中获取。
function getRandomImg(gameFunc){
$.post('scripts/imagerandomizer.php', {randImg:1}, function(data){
var im = $('#imageId');
im.attr('src', data.image);
im.load(function(){
gameFunc(/* pass args to gameFunc here */);
}
}, 'json');
}
getRandomImg(function(){
// game code here - could also pass function name instead of Anonymous function
});