php/jquery buffer full ?页面未完全加载
php/jquery buffer full? page not completely loading
我目前正在编写一个页面,该页面托管在单板计算机上。我正在编码的当前网页用于设置开发板的时区和当前时间设置。它具有jquery项,javascript函数,带有3个提交按钮的表单,php脚本和一些正在运行的linux命令行exec调用,以从命令行更改董事会的时区。在确定默认下拉项选择应该是什么时,我还做了不止一些字符串比较。
我遇到的问题非常可重复。如果我提交时区,然后更改时间,再次设置时区,再次更改时间,也许再重复一次,页面不会完全加载。查看源代码后,很明显整个页面没有完全加载。通常,它会在下拉选择创建中的某个地方失败。
例如,当加载的源代码文件失败时,它位于最底部:
<input class="button" type="submit" name="getLocalTime" value="Copy Local Time"><br><br><br><table><tr><td colspan="2"><tr><td>
<select name="DropDownTimezone" id="DropDownTimezone">
<option value="Etc/GMT+12">(GMT -12:00) Eniwetok, Kwajalein</option>
<option value="Etc/GMT+11">(GMT -11:00) Midway Island, Samoa</option>
<option value="Etc/GMT+10">(GMT -10:00) Hawaii</option>
<option value="Etc/GMT+9">(GMT -9:00) Alaska</option>
<option value="Etc/GMT+8">(GMT -8:00) Pacific Time (US & Canada)</option>
<option value="Etc/GMT+7">(GMT -7:00)
该部分的编码如下:
<select name="DropDownTimezone" id="DropDownTimezone">
<option <?php if ($hwOffset == "-12") echo 'selected'; ?> value="Etc/GMT+12">(GMT -12:00) Eniwetok, Kwajalein</option>
<option <?php if ($hwOffset == "-11") echo 'selected'; ?> value="Etc/GMT+11">(GMT -11:00) Midway Island, Samoa</option>
<option <?php if ($hwOffset == "-10") echo 'selected'; ?> value="Etc/GMT+10">(GMT -10:00) Hawaii</option>
<option <?php if ($hwOffset == "-9") echo 'selected'; ?> value="Etc/GMT+9">(GMT -9:00) Alaska</option>
<option <?php if ($hwOffset == "-8") echo 'selected'; ?> value="Etc/GMT+8">(GMT -8:00) Pacific Time (US & Canada)</option>
<option <?php if ($hwOffset == "-7") echo 'selected'; ?> value="Etc/GMT+7">(GMT -7:00) Mountain Time (US & Canada)</option>
<option <?php if ($hwOffset == "-6") echo 'selected'; ?> value="Etc/GMT+6">(GMT -6:00) Central Time (US & Canada), Mexico City</option>
<option <?php if ($hwOffset == "-5") echo 'selected'; ?> value="Etc/GMT+5">(GMT -5:00) Eastern Time (US & Canada), Bogota, Lima</option>
<option <?php if ($hwOffset == "-4") echo 'selected'; ?> value="Etc/GMT+4">(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz</option>
<option <?php if ($hwOffset == "-3") echo 'selected'; ?> value="Etc/GMT+3">(GMT -3:00) Brazil, Buenos Aires, Georgetown</option>
<option <?php if ($hwOffset == "-2") echo 'selected'; ?> value="Etc/GMT+2">(GMT -2:00) Mid-Atlantic</option>
<option <?php if ($hwOffset == "-1") echo 'selected'; ?> value="Etc/GMT+1">(GMT -1:00) Azores, Cape Verde Islands</option>
<option <?php if ($hwOffset == "+0") echo 'selected'; ?> value="Etc/GMT+0">(GMT) Western Europe Time, London, Lisbon, Casablanca</option>
<option <?php if ($hwOffset == "+1") echo 'selected'; ?> value="Etc/GMT-1">(GMT +1:00) Brussels, Copenhagen, Madrid, Paris</option>
<option <?php if ($hwOffset == "+2") echo 'selected'; ?> value="Etc/GMT-2">(GMT +2:00) Kaliningrad, South Africa</option>
<option <?php if ($hwOffset == "+3") echo 'selected'; ?> value="Etc/GMT-3">(GMT +3:00) Baghdad, Riyadh, Moscow, St Petersburg</option>
<option <?php if ($hwOffset == "+4") echo 'selected'; ?> value="Etc/GMT-4">(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi</option>
<option <?php if ($hwOffset == "+5") echo 'selected'; ?> value="Etc/GMT-5">(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent</option>
<option <?php if ($hwOffset == "+6") echo 'selected'; ?> value="Etc/GMT-6">(GMT +6:00) Almaty, Dhaka, Colombo</option>
<option <?php if ($hwOffset == "+7") echo 'selected'; ?> value="Etc/GMT-7">(GMT +7:00) Bangkok, Hanoi, Jakarta</option>
<option <?php if ($hwOffset == "+8") echo 'selected'; ?> value="Etc/GMT-8">(GMT +8:00) Beijing, Perth, Singapore, Hong Kong</option>
<option <?php if ($hwOffset == "+9") echo 'selected'; ?> value="Etc/GMT-9">(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk</option>
<option <?php if ($hwOffset == "+10") echo 'selected'; ?> value="Etc/GMT-10">(GMT +10:00) Eastern Australia, Guam, Vladivostok</option>
<option <?php if ($hwOffset == "+11") echo 'selected'; ?> value="Etc/GMT-11">(GMT +11:00) Magadan, Solomon Islands, New Caledonia</option>
<option <?php if ($hwOffset == "+12") echo 'selected'; ?> value="Etc/GMT-12">(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka</option>
</select>
我认为这与内存耗尽或缓冲区填满有关,因为它不会每次都失败,但在大致相同数量的重复步骤后会失败。PHP 中是否有任何有用的命令或方法可以避免此问题?或者像这样的问题还有其他可能的根本原因吗?提前谢谢。
为什么会发生这种情况的答案(因为你的代码看起来不错,虽然很丑,正如其他人提到的,请尝试使用error_reporting(E_ALL)
)。这是你通过jQuery收到的,还是加载网站时的HTML输出?
作为附加组件,这里有一个代码的数组版本,您应该能够轻松合并您的翻译。
<?php
$timezones = array(
'Eniwetok, Kwajalein',
'Midway Island, Samoa',
'Hawaii',
'Alaska',
'Pacific Time (US & Canada)',
'Mountain Time (US & Canada)',
'Central Time (US & Canada), Mexico City',
'Eastern Time (US & Canada), Bogota, Lima',
'Atlantic Time (Canada), Caracas, La Paz',
'Brazil, Buenos Aires, Georgetown',
'Mid-Atlantic',
'Azores, Cape Verde Islands',
'Western Europe Time, London, Lisbon, Casablanca',
'Brussels, Copenhagen, Madrid, Paris',
'Kaliningrad, South Africa',
'Baghdad, Riyadh, Moscow, St Petersburg',
'Abu Dhabi, Muscat, Baku, Tbilisi',
'Ekaterinburg, Islamabad, Karachi, Tashkent',
'Almaty, Dhaka, Colombo',
'Bangkok, HanoiBeijing, Perth, Singapore, Hong Kong, Jakarta',
'Beijing, Perth, Singapore, Hong Kong',
'Tokyo, Seoul, Osaka, Sapporo, Yakutsk',
'Eastern Australia, Guam, Vladivostok',
'Magadan, Solomon Islands, New Caledonia',
'Auckland, Wellington, Fiji, Kamchatka'
);
echo '<select name="DropDownTimezone" id="DropDownTimezone">';
for ($i = 0; $i < sizeof($timezones); $i++) {
$timezone = ($i - 12);
$timezoneReverse = ($timezone * -1);
$timezoneValue = ($timezone >= 0 ? '+' . $timezone : $timezone);
$timezoneReverseValue = ($timezoneReverse >= 0 ? '+' . $timezoneReverse : $timezoneReverse);
echo '<option' . ($hwOffset == $timezoneValue ? ' selected' : '') . ' value="Etc/GMT' . $timezoneReverseValue . '">(GMT' . ($timezone != 0 ? ' ' . $timezoneValue . ':00' : '') . ') ' . $timezones[$i] . '</option>';
}
echo '</select>';
?>
请注意,这实际上可能不会解决您的问题,因此请不要接受它作为解决方案,因为它只是对您的 HTML 的编辑,但对我来说,这是一个太大的变化,无法编辑您的 OP
不幸的是,令人尴尬的是,这个问题与我的表单代码有关,与时区下拉列表无关,它只是巧合地每次都在那里失败。谢谢大家对这个问题的意见,因为它确实为我指明了正确的方向(让我觉得很愚蠢哈哈)。一旦我开始跟踪可能的损坏变量,我注意到我的表单 action= item 指向一个变量来获取文件名。我很快意识到,在监视错误日志一段时间后,文件名尚未设置。一旦我清理了那个阵容,它似乎奇怪地解决了我的其他问题。
之前:echo "<form method='POST' action='".$PHP_SELF."' onsubmit='getTime();'>";
之后:echo "<form method='POST' action='?page=home' onsubmit='getTime();'>";
这似乎已经解决了它。我对为什么它仍在提交以及为什么它以这种方式失败有点困惑,但这行似乎已经修复了正在发生的任何部分加载的页面。
- 使用javascript函数在页面初始化后加载jquery
- 什么'这是加载jQuery的最佳方式
- 在WordPress站点中加载jquery.js后加载javascript代码
- 延迟加载jquery后替换$(document).ready(function)
- 如何使用onLoad加载jQuery JSON.从Zipcode On Form获取城市和州
- 对页面重新加载 Jquery 执行操作
- 在Ajax(过滤器)加载之后加载jQuery脚本
- 异步加载JQuery时Tabbed Box已损坏
- 加载Jquery时Chrome扩展出错
- 在更改事件上加载jQuery DataTable
- 手动加载JQuery而不触发内容安全策略
- 如果更改,请在ng之后重新加载Jquery
- 脚本似乎在加载jQuery之前运行-未定义Uncaught ReferenceError:$
- 在使用jquery之前动态加载jquery
- 如何重新加载jquery,以便它能为下一个进程工作
- Firefox没有't从ajax.googleapis.com加载jquery
- 我无法在自定义Wordpress主题中成功加载jQuery
- 正在从maphilight href加载Jquery选项卡
- 如何在完全加载html之后加载jquery代码段
- 在页面加载jQuery/Javascript时,按.class对表行进行排序