我在PHP中有一个数组,我在Javascript中获取。 这是我的PHP代码
$query = "SELECT SeatNum FROM `$busNum` WHERE AB = 1";
$runQuery = mysqli_query($con, $query);
$i = 0;
foreach($runQuery as $row)
{
$availableSeats[$i++] = $row['SeatNum'];
}
这里我在javascript中获取此字符串
var getBookedSeats = <?php echo json_encode($availableSeats); ?>;
var bookedSeats =[];
for(var i =0 ; i <getBookedSeats.length ; i++){
bookedSeats[i] = getBookedSeats[i];
}
该数组也成功保存在scheduledSeats中。现在的问题是,当我使用该数组作为参数来调用函数。参数中没有任何内容。即使没有范围问题。这是我的功能:
var init = function (reservedSeat) {
//code
}
init(bookedSeats);
init函数的实现是:
var settings = {
rows: 5,
cols: 15,
rowCssPrefix: 'row-',
colCssPrefix: 'col-',
seatWidth: 35,
seatHeight: 35,
seatCss: 'seat',
selectedSeatCss: 'selectedSeat',
selectingSeatCss: 'selectingSeat'
};
var init = function (reservedSeat) {
var str = [], seatNo, className;
for (i = 0; i < settings.rows; i++) {
for (j = 0; j < settings.cols; j++) {
seatNo = (i + j * settings.rows + 1);
className = settings.seatCss + ' ' + settings.rowCssPrefix + i.toString() + ' ' + settings.colCssPrefix + j.toString();
if ($.isArray(reservedSeat) && $.inArray(seatNo, reservedSeat) != -1) {
className += ' ' + settings.selectedSeatCss;
}
str.push('<li class="' + className + '"' +
'style="top:' + (i * settings.seatHeight).toString() + 'px;left:' + (j * settings.seatWidth).toString() + 'px">' +
'<a title="' + seatNo + '">' + seatNo + '</a>' +
'</li>');
}
}
$('#place').html(str.join(''));
};
答案 0 :(得分:0)
从评论看起来,您的变量的被称为为座位分配值。但是,如果您的init()函数需要整数,那么您将需要使用如下整数构建registeredSeats数组:
for(var i =0 ; i <getBookedSeats.length ; i++){
bookedSeats[i] = parseInt( getBookedSeats[i], 10 );
}
答案 1 :(得分:0)
我不使用php,但我相信php的json_encode返回一个JSON格式的字符串。这导致您的JavaScript代码将字符串中的单个字符存储到bookSeats变量中。
你需要解析从php返回的字符串。例如......
var getBookedSeats = JSON.parse(<?php echo json_encode($availableSeats); ?>);
答案 2 :(得分:0)
似乎问题在于您尝试将数组值作为数字进行比较,并且您当前将它们作为字符串进行比较。要将它们转换为数字,您只需使用:
bookedSeats = bookedSeats.map(Number) // iterate over each bookedSeats element and return its numeric value
与以下内容相同:
bookedSeats = bookedSeats.map(function(value){
return Number(value);
})