【发布时间】:2017-12-27 17:17:12
【问题描述】:
我想使用 JS/JQuery/PHP/MySQLi 自动生成一个 HTML 表来填充页面上的一个 div,该页面还包括一个允许用户输入搜索条件的 div。例如:输入日期范围,单击按钮将这些日期 $.post 到 PHP 文件,该文件查询 MySQLi 表并将多维数组返回给 JS,然后在构建 HTML 时解析该数组。
因此,从用户的角度来看,他输入了开始日期和停止日期,并且在同一页面的其他位置,他会看到在这两个日期之间进行的所有预订的列表。
出于代码管理目的,我想将我的 JS 脚本作为 HTML 页面标题中引用的单独文件,并将我的 PHP 脚本作为从 JS 脚本引用的单独文件。
我的 JS 脚本看起来像这样:
$(document).ready(function(){
var startDate = new Date (2017,11,25);
var stopDate = new Date (2017,11,31);
displayBookings = function(startDate, stopDate) {
$.post("php/getBookings.php", {
startDate: startDate,
stopDate: stopDate
},
function(data){
html = "<table>";
var i, j, result = JSON.parse(data);
while (i=0, i <= result.length, i++) {
while (j=0, j <= result[i].length, j++) {
html+= "<tr><td>"+result[i][j]+"</td></tr>";
}
}
html += "</table>";
$('#bookings').html(html);
});
};
});
我的 php 脚本('getBookings.php')如下所示:
<?php
$startDate = date('Y-m-d',strtotime($_POST["startDate"]));
$stopDate = date('Y-m-d',strtotime($_POST["stopDate"]));
$con = mysqli_connect("localhost","userid","password","database");
$sql = "SELECT * FROM bookings WHERE date BETWEEN '$startDate' AND '$stopDate'";
$result = mysqli_query($con,$sql);
$rows = mysqli_num_rows($result);
for ($i = 0; $i < $rows; $i++) {
$row = mysqli_fetch_array($result);
$newArray[$i]['reference'] = $row['reference'];
$newArray[$i]['name'] = $row['name'];
$newArray[$i]['price'] = $row['price'];
}
mysqli_free_result($result);
mysqli_close($con);
echo json_encode($newArray);
?>
我的 HTML 代码包括:
<button onClick='displayBookings()'>Press</button>
<div id="bookings"></div>
但是当我按下按钮时,我得到:
Uncaught TypeError: Cannot read property 'length' of null
我是初学者,所以我知道我可能犯了一些基本错误。有人可以帮忙吗?
【问题讨论】:
-
用调试器看看
data返回时的实际情况 -
而且,也不需要将数据解析成json格式
-
你可以按F12,打开开发者工具。它有一个网络选项卡,您可以在其中查看您的 xhr(xml http 请求)。在那里你应该能够看到内容。你能发布其中的内容或至少部分内容吗?
-
这是一段很长的内容。这是前几个字符。我不知道它在告诉我什么。 ;!function(){var t=0,e=function(t,e){return"function"!=typeof t||t.replaced?t:(e.replaced=!0,e)};if( "undefined"!=typeof CustomEvent&&"function"==typeof window.dispatchEvent)
-
我很确定那是错误的反应。我更新了我的答案,你能告诉我 console.log 注销了什么吗?
标签: javascript jquery arrays json mysqli