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]上得到了空引用。我猜我不能像以前那样将命令存储在数组中。有人能告诉我做这件事的方法吗。
如果您想将"命令"放入数组,您需要将函数放入:
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");
如果您只返回了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
的第一个自变量是数组元素的索引
好的,我有几件事你可能想改变:
首先,您可能会在dearray_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>