- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个相当大的页面,其中包含很多内容,其中一部分是价格与日期的表格。通常该表如下所示:
“上一个”和“下一个”链接以及日期选择器使用户能够在表中显示不同的日期范围。然而,使用简单的 html 表单和 php/mysql,整个页面每次都会刷新,看起来非常困惑。我想使用 jQuery 和 Ajax 来刷新表格。
为此,我使用 PHP include() 将表放入单独的文件中。名为 calendar_inner.php 的单独文件使用名为 $startdate 的变量来执行必要的 mysql 查询以获取表的所有数据。现在我只需要了解如何为包含的文件提供新的 $startdate 值,然后刷新该文件。这就是我在黑暗中摸索 jQuery 的地方。
从日期选择器开始,我开始编写 jQuery 脚本,但不出所料,它不起作用。
$('#StartDateCal').on('submit', function(g) {
g.preventDefault(); //prevent form from submitting
var startdate = $("#StartDate").val();
$.ajax ({
type: 'post',
url: 'calendar_inner.php',
data: data,
dataType: 'text'
});
});
请对我温柔一点。我在 jQuery 方面偶尔取得的成功仅限于我能够几乎逐字复制别人的代码的情况。谢谢。
编辑我已经根据 Raslett 的建议修改了我的脚本,但我还没有找到解决方案。
$('#StartDateCal').on('submit', function(g) {
g.preventDefault(); //prevent form from submitting
$.ajax ({
type: 'post',
url: 'calendar_inner.php',
data: $('#StartDateCal').serialize(),
success: function(result) {
$('#getresult').html(result);
}
});
});
现在整个页面不再刷新,只有calendar_inner.php文件刷新,所以这是一个小小的成功。我认为现在的问题是如何处理结果。使用上面的代码并放置
<div id="getresult"></div>
在calendar_inner.php的开头将我的404错误页面插入到整个页面中。将 html(result) 更改为 text(result) 会将 404 错误页面的整个代码写入同一空间。我不知道脚本生成的是什么导致服务器调用 404 错误页面。
第二次编辑我摆脱了 404 错误。我调用的网址错误。现在这个问题已经得到纠正,我已经越来越接近了,但剩下要做的事情却相当神秘。该脚本现在将表的第一行写入两次:一次的开始日期为 1 月 1 日,第二次的开始日期为原始开始日期。所以现在我要做的就是:1. 说服表行的第一个版本使用新的开始日期2. 停止显示第二个版本的表行3. 将开始日期传递到表格的下一部分,计算并写入价格唷!不容易。
第三次编辑正如 Rasclatt 所说,jQuery 现在可以工作了,我只需要整理 calendar_inner.php 文件即可。为了简单起见,我只是将前几行放在下面。关键变量是 $startdate,它驱动其他所有内容。我需要 jQuery 来更改 $startdate 的值。
第四次编辑更新了 calendar_inner.php 的代码并显示了更多内容。见下文。
<div id="getresult"></div>
<script>
$(document).ready(function() {
//Submit change of date in price tab without refreshing page
$('#StartDateCal').on('submit', function(g) {
g.preventDefault(); //prevent form from submitting
$.ajax ({
type: 'post',
url: '/includes/calendar_inner.php',
data: $('#StartDateCal').serialize(),
success: function(result) {
console.log(result),
$('#getresult').html(result);
}
});
});
});
</script>
<?php
if(isset($_POST['StartDate']) && !empty($_POST['StartDate'])) {
$startdate = htmlentities($_POST['StartDate'], ENT_QUOTES);
$firstdate = date('Y-m-d',$startdate);
$lastdate = date('Y-m-d',strtotime('+11 days',strtotime($firstdate)));
// database insertion of above variables
}else{
$firstdate = date('Y-m-d',$startdate);
$lastdate = date('Y-m-d',strtotime('+11 days',strtotime($firstdate)));
}
//Select database
require_once('../Connections/MySQL.php');
mysql_select_db($database_MySQL, $MySQL);
mysql_set_charset("utf8");
// Create a temporary table
$query_temptable = "CREATE TEMPORARY TABLE temptable (dt DATE NOT NULL)";
$result = mysql_query($query_temptable, $MySQL) or die(mysql_error());
//Now loop through the date range and fill the temporary table
$thisdate = $firstdate;
while (strtotime($thisdate) <= strtotime($lastdate)){
$query_insertdate = "INSERT INTO temptable (dt) VALUES ('$thisdate')";
$result2 = mysql_query($query_insertdate, $MySQL) or die(mysql_error());
$thisdate = date('Y-m-d', strtotime('+1 day', strtotime($thisdate)));
}
// MySQL query to get price_id (or blank) for all dates in range
$query_tariff = "SELECT temptable.dt, lh_dates.tariff_id FROM temptable LEFT JOIN lh_dates ON temptable.dt = lh_dates.dt AND hid = '$hid'";
$tariff = mysql_query($query_tariff, $MySQL) or die(mysql_error());
// Create array of tariff_ids
$i = 0;
$tariff_id_list = array();
while ($row_tariff = mysql_fetch_assoc($tariff)) {
$tariff_id_list[$i] = $row_tariff['tariff_id'];
$date_list[$i] = $row_tariff['dt'];
$i++;
}
$tariff_id_unique = array_unique($tariff_id_list);
// Drop the temporary table
$query_droptable = "DROP TEMPORARY TABLE IF EXISTS temptable";
$result3 = mysql_query($query_droptable, $MySQL) or die(mysql_error());
//Here we start building the pseudo-table using divs
echo "<div class='calendar'>";
// Dates row
echo "<div class='toprow'>";
echo "<div class='cal_firstcol'> </div>";
$i = 0;
$thisdate=strtotime($firstdate);
while ($i++ < 12) {
$day_week = date('D', $thisdate);
$day_num = date('j', $thisdate);
$month_name = strtoupper(date('M', $thisdate));
echo "<div class='cal_dates'>";
echo $day_week."<br><span class='cal_day'>".$day_num."</span><br>".$month_name;
$thisdate = $thisdate+86400;
echo "</div>";
}
echo "<div class='clear'></div></div>";
// Room rows
//MySQL query to get rooms
$query_room = "SELECT room_id, roomtype, normalocc, singleocc, extrabed, childbed, cot FROM lh_rooms WHERE hid = '$hid' ORDER BY orderr ASC";
$room = mysql_query($query_room, $MySQL) or die(mysql_error());
while ($row_room = mysql_fetch_assoc($room)) {
foreach ($tariff_id_unique as $value) {
$tariff_id = $value;
$room_id = $row_room['room_id'];
$query_price = "SELECT * FROM lh_prices WHERE tariff_id = '$tariff_id' AND room_id = '$room_id'";
$price = mysql_query($query_price, $MySQL) or die(mysql_error());
$row_price[$value] = mysql_fetch_assoc($price);
}
echo "<div class='row'>";
echo "<div class='cal_firstcol'>".$row_room['roomtype']."</div>";
$thisdate = $firstdate;
$i=0;
while (strtotime($thisdate) <= strtotime($lastdate)){
$thisday = strtolower(date('D',strtotime($thisdate)));
echo "<div class='cal_pricecol'>";
if (in_array($thisday, $we_rates)) {
echo $row_price[$tariff_id_list[$i]]['price_we_std'];
}else{
echo $row_price[$tariff_id_list[$i]]['price_wd_std'];
}
echo "</div>";
$i++;
$thisdate = date('Y-m-d',strtotime('+1 day',strtotime($thisdate)));
}
echo "</div>";
if (($row_room['extrabed']>=1)||($row_room['childbed']>=1)) {
echo "<div class='row hiddenrow' style='display:none'>";
echo "<div class='cal_firstcol'>Child Extra Bed</div>";
$thisdate = $firstdate;
$i=0;
while (strtotime($thisdate) <= strtotime($lastdate)){
$thisday = strtolower(date('D',strtotime($thisdate)));
echo "<div class='cal_pricecol'>";
echo $row_price[$tariff_id_list[$i]]['price_eb_c'];
echo "</div>";
$i++;
$thisdate = date('Y-m-d',strtotime('+1 day',strtotime($thisdate)));
}
echo "<div class='clear'></div></div>";
}
}
echo "</div>";
?>
第五次编辑(!)回复 Rasclatt,这是脚本运行后表格的样子。 日期选择器、上一个、复选框和下一个都位于父页面中。从 9 月 30 日开始的第一行日期是脚本的结果,第二行日期被编码到 calendar_inner.php 中。搬家
<div id="getresult"></div>
页面下方相应地移动第一行日期。日期选择器表单的代码是
<form id="StartDateCal">
<input type="hidden" name="hid" id="hid" value="<?php echo $hid ?>">
<input type="hidden" name="lang" id="lang" value="<?php echo $$ln ?>">
From <input name="StartDate" id="StartDate" class="datebox" size="10" value="<?php echo date('j M Y', $startdate) ?>" type="date">
<input name="submit" class="button" id="CalSubmitBtn" type="submit" value="Go">
</form>
最佳答案
这应该加载表单,然后加载脚本,该脚本将通过 AJAX 自动加载您的表到 <div id="get result"></div>
容器。提交表单后,它应该加载到覆盖表格的同一位置。因此,为了澄清,您不会运行任何 php 在原始加载页面上构建表。您运行 php 的目的就是计算 $hid
, $$ln
,和$startdate
。您的calendar_inner.php
仅包含日历代码,加载页面仅包含表单和 jQuery。
作为一个选项,我向 CheckDates(FetchResults)
添加了首选项哪里FetchResults
是容器的名称。以防万一您想将其加载到不同的容器名称中。
<form id="StartDateCal">
<input type="hidden" name="hid" id="hid" value="<?php echo $hid ?>">
<input type="hidden" name="lang" id="lang" value="<?php echo $$ln ?>">
From <input name="StartDate" id="StartDate" class="datebox" size="10" value="<?php echo date('j M Y', $startdate) ?>" type="date">
<input name="submit" class="button" id="CalSubmitBtn" type="submit" value="Go">
</form>
<div id="getresult"></div>
<script>
function CheckDates(FetchResults)
{
$.ajax ({
type: 'post',
url: '/includes/calendar_inner.php',
data: $("#StartDateCal").serialize(),
success: function(result) {
$("#"+FetchResults).html(result);
}
});
}
$(document).ready(function() {
// Auto load ajax
CheckDates('getresult');
// On submit load ajax
$('#StartDateCal').submit(function() {
// Add a loader image or text so you know it's refreshing
$('#getresult').html("Loading...");
// Run table loader
CheckDates('getresult');
return false;
});
});
</script>
关于php - 使用 Jquery 和 Ajax 更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126945/
我查看了网站上的一些问题,但还没有完全弄清楚我做错了什么。我有一些这样的代码: var mongoose = require('mongoose'), db = mongoose.connect('m
基本上,根据 this bl.ocks,我试图在开始新序列之前让所有 block 都变为 0。我认为我需要的是以下顺序: 更新为0 退出到0 更新随机数 输入新号码 我尝试通过添加以下代码块来遵循上述
我试图通过使用随机数在循环中设置 JSlider 位置来模拟“赛马”的投注结果。我的问题是,当然,我无法在线程执行时更新 GUI,因此我的 JSlider 似乎没有在竞赛,它们从头到尾都在运行。我尝试
该功能非常简单: 变量:$table是正在更新的表$fields 是表中的字段,$values 从帖子生成并放入 $values 数组中而$where是表的索引字段的id值$indxfldnm 是索引
让我们想象一个环境:有一个数据库客户端和一个数据库服务器。数据库客户端可以是 Java 程序或其他程序等;数据库服务器可以是mysql、oracle等。 需求是在数据库服务器上的一个表中插入大量记录。
在我当前的应用程序中,我正在制作一个菜单结构,它可以递归地创建自己的子菜单。然而,由于这个原因,我发现很难也允许某种重新排序方法。大多数应用程序可能只是通过“排序”列进行排序,但是在这种情况下,尽管这
Provisioning Profile 有 key , key 链依赖于它。我想知道 key 什么时候会改变。 Key will change after renew Provisioning Pr
截至目前,我在\server\publications.js 中有我的 MongoDB“选择”,例如: Meteor.publish("jobLocations", function () { r
我读到 UI 应该始终在主线程上更新。但是,当谈到实现这些更新的首选方法时,我有点困惑。 我有各种函数可以执行一些条件检查,然后使用结果来确定如何更新 UI。我的问题是整个函数应该在主线程上运行吗?应
我在代理后面,我无法构建 Docker 镜像。 我试过 FROM ubuntu , FROM centos和 FROM alpine ,但是 apt-get update/yum update/apk
我构建了一个 Java 应用程序,它向外部授权客户端公开网络服务。 Web 服务使用带有证书身份验证的 WS-security。基本上我们充当自定义证书颁发机构 - 我们在我们的服务器上维护一个 ja
因此,我有时会在上传新版本时使用 app_offline.htm 使应用程序离线。 但是,当我上传较大的 dll 时,我收到黄色错误屏幕,指出无法加载 dll。 这似乎与我对 app_offline.
我刚刚下载了 VS Apache Cordova Tools Update 5,但遇到了 Node 和 NPM 的问题。我使用默认的空白 cordova 项目进行测试。 版本 如果我在 VS 项目中对
所以我有一个使用传单库实例化的 map 对象。 map 实例在单独的模板中创建并以这种方式路由:- var app = angular.module('myApp', ['ui', 'ngResour
我使用较早的 Java 6 u 3 获得的帧速率是新版本的两倍。很奇怪。谁能解释一下? 在 Core 2 Duo 1.83ghz 上,集成视频(仅使用一个内核)- 1500(较旧的 java)与 70
我正在使用 angular 1.2 ng-repeat 创建的 div 也包含 ng-click 点击时 ng-click 更新 $scope $scope 中的变化反射(reflect)在使用 $a
这些方法有什么区别 public final void moveCamera(CameraUpdate更新)和public final void animateCamera (CameraUpdate
我尝试了另一篇文章中某人评论中关于如何将树更改为列表的建议。但是,我在某处(或某物)有未声明的变量,所以我列表中的值是 [_G667, _G673, _G679],而不是 [5, 2, 6],这是正确
实现以下场景的最佳方法是什么? 我需要从java应用程序调用/查询包含数百万条记录的数据库表。然后,对于表中的每条记录,我的应用程序应该调用第三方 API 并获取状态字段作为响应。然后我的应用程序应该
只是在编写一些与 java 图形相关的代码,这是我今天的讲座中的非常简单的示例。不管怎样,互联网似乎说更新不会被系统触发器调用,例如调整框架大小等。在这个例子中,更新是由这样的触发器调用的(因此当我只
我是一名优秀的程序员,十分优秀!