test.php上的PHP代码:
<?php
$con = mysqli_connect("localhost", "user", "password", "DB");
if (mysqli_connect_errno()){
echo "failed to connect:" . mysqli_connect_error();
}
$grab = mysqli_query($con, "SELECT * FROM DB");
$cars = array();
while($row = mysqli_fetch_assoc($grab)){
array_push($cars, array("id" => $row["Id"], "name" => $row["Name"], "color" => $row["Color"];
}
echo json_encode($cars);
然后在html页面上的jQuery / javascript代码:
var iNL1 = document.getElementById("itemNameLink1").innerHTML;
var iNL2 = document.getElementById("itemnameLink2").innerHTML;
var iNL3 = document.getElementById("itemNameLink3").innerHTML;
var iNLarr = [iNL1, iNL2, iNL3];
i = 0;
$.get("test.php", function($cars){
$.each($cars, function(){
iNLarr[i] = this.name;
i++;
});
}, "json");
任何人都可以告诉我为什么这不起作用,我在iNLarr [i]上得到空参考。我猜我不能像我已经完成的那样将命令存储在一个数组中。任何人都可以告诉我这样做的方法。
答案 0 :(得分:2)
如果你想把&#34;命令&#34;在数组中,您需要将函数放入:
iNRarr = [
function(html) {
document.getElementById("itemNameLink1").innerHTML = html;
}, function(html) {
document.getElementById("itemNameLink2").innerHTML = html;
}, function(html) {
document.getElementById("itemNameLink3").innerHTML = html;
}
];
然后你调用这样的函数:
$.get("test.php", function($cars){
$.each($cars, function(i, car){
if (iNLarr[i]) {
iNLarr[i](car.name);
}
});
}, "json");
答案 1 :(得分:1)
如果您只返回3辆汽车和3个元素,因为您使用的是jQuery,您可以将其简化为:
var $elements=$('#itemNameLink1,itemnameLink2,itemNameLink3');
$.get("test.php", function($cars){
$.each($cars, function(i, car){
$elements.eq(i).html(car.name);
});
}, "json");
eq()
方法用于按索引查找集合中的元素,当输入为数组时,$.each
的第一个参数是数组元素的索引
答案 2 :(得分:0)
好的,我有几件事你可能想要改变:
首先,您可能会在de array_push
行上收到语法错误。您没有关闭array_push
命令,请向其添加))
。
我认为您对javascript的定义是正确的。你无法通过object[number]
获得它。尝试这样的事情:
var iNLarr = new Array();
iNLarr[0] = document.getElementById("itemNameLink1");
iNLarr[1] = document.getElementById("itemNameLink2");
iNLarr[2] = document.getElementById("itemNameLink3");
另一件事是iNLarr[i] = this.name;
也不会工作。你可能意味着:
iNLarr[i].innerHTML = $(this).attr('name');
所以你的完整可能是这样的:
你的PHP:
<?php
$con = mysqli_connect("localhost", "user", "password", "DB");
if (mysqli_connect_errno()){
echo "failed to connect:" . mysqli_connect_error();
}
$grab = mysqli_query($con, "SELECT * FROM DB");
$cars = array();
while($row = mysqli_fetch_assoc($grab)){
array_push($cars, array("id" => $row["Id"], "name" => $row["Name"], "color" => $row["Color"]));
}
echo json_encode($cars);
?>
您的HTML / Javascript:
<div id="itemNameLink1">1</div>
<div id="itemNameLink2">2</div>
<div id="itemNameLink3">3</div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
var iNLarr = new Array();
iNLarr[0] = document.getElementById("itemNameLink1");
iNLarr[1] = document.getElementById("itemNameLink2");
iNLarr[2] = document.getElementById("itemNameLink3");
var i = 0;
$.get("test.php", function($cars){
$.each($cars, function(){
iNLarr[i].innerHTML = $(this).attr('name');
i++;
});
}, "json");
</script>