php / jquery buffer full?页面未完全加载

时间:2012-06-18 13:10:55

标签: php javascript jquery html

我正在编写一个托管在单板计算机上的页面。我编码的当前网页用于设置电路板的时区和当前时间设置。它具有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 &amp; 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 &amp; Canada)</option>
<option <?php if ($hwOffset == "-7") echo 'selected'; ?> value="Etc/GMT+7">(GMT -7:00) Mountain Time (US &amp; Canada)</option>
<option <?php if ($hwOffset == "-6") echo 'selected'; ?> value="Etc/GMT+6">(GMT -6:00) Central Time (US &amp; Canada), Mexico City</option>
<option <?php if ($hwOffset == "-5") echo 'selected'; ?> value="Etc/GMT+5">(GMT -5:00) Eastern Time (US &amp; 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或方法中是否有任何有用的命令可以避免出现此问题?或者这样的问题还有其他可能的根本原因吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

这不是解决为什么会发生这种情况的答案(因为您的代码看起来很好,虽然很难看,而且正如其他人提到的那样,尝试使用error_reporting(E_ALL))。这是你用jQuery收到的,或者这是加载网站时的HTML输出?

作为附加组件,这里是您的代码的数组版本,您应该能够轻松地合并您的翻译。

<?php
    $timezones = array(
        'Eniwetok, Kwajalein',
        'Midway Island, Samoa',
        'Hawaii',
        'Alaska',
        'Pacific Time (US &amp; Canada)',
        'Mountain Time (US &amp; Canada)',
        'Central Time (US &amp; Canada), Mexico City',
        'Eastern Time (US &amp; 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

答案 1 :(得分:0)

不幸的是,令人尴尬的是,这个问题与我的表单代码有关,并且与时区下拉列表没什么关系,每次都巧合地失败了。谢谢大家对这个问题的意见,因为它确实指出了我正确的方向(让我感到愚蠢哈哈)。一旦我开始追踪可能的破坏变量,我注意到我的form action = item指向一个变量来获取文件名。我很快就意识到在监视错误日志一段时间之后没有设置文件名。一旦我清理了那条线,它似乎很奇怪地解决了我的其他问题。

之前:echo "<form method='POST' action='".$PHP_SELF."' onsubmit='getTime();'>";

之后:echo "<form method='POST' action='?page=home' onsubmit='getTime();'>";

这似乎解决了这个问题。我有点困惑,为什么它还在提交,为什么它以它的方式失败,但是这条线似乎修复了正在发生的任何部分加载的页面。

相关问题