【发布时间】:2015-08-27 18:33:11
【问题描述】:
这是一个相当长、复杂和具体的问题,但我希望有人能提供帮助,因为我似乎找不到破解它的原因/逻辑。
注意我知道我使用的是已弃用的 mysql,但这不是问题所在(而且我的托管站点只支持旧版本)
第 1 部分是 dataLoader.php -> 此脚本查询数据库。从它得到的表中,我们有posx 和posy 用于表中的每一行。然后这些通过 localStorage 发送到另一个页面 - download.php。这是来自dataLoader.php的相关代码:
<html>
<meta http-equiv="refresh" content="10">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
var xPos = [];
var yPos = [];
</script>
<?php //*Connect to database*
$locationq = "SELECT posx, posy FROM locations";
$locationrs = mysql_query($locationq) or die ('Couldnt get location'.mysql_error());
while ($locrow = mysql_fetch_assoc($locationrs))
{
echo " | " .$locrow['posx'] . " | " . $locrow['posy'];
$posx = $locrow['posx'];
$posy = $locrow['posy'];
echo "<input type ='hidden' class='posx' name='posx' value='$posx' >";
echo "<input type ='hidden' class='posy' name='posy' value='$posy' ><br>";
echo "<script> xPos.push($('.posx').val()); yPos.push($('.posy').val());
</script>";
}
echo "<script>localStorage.setItem('xPos',xPos);
localStorage.setItem('yPos',yPos);</script>";
echo $posx;
echo $posy;
exit;
mysql_close(); ?>
</body>
</html>
第 2 部分是 download.php,其中来自 dataLoader.php 的数据(坐标)被提取并绘制到谷歌地图上。 问题是当我检查 localStorage(使用 f12)时,它有两次第一行的值,而不是有 2 组不同的值。
让我感到困惑的一点是它只将第一个团队的值存储在数据库表中,而不是第二个。我的麻烦是为表格中的每一行获取 posx 和 posy ,然后为每个 posx 和 posy 在地图上放置一个标记。回显显示的值(两行的值不同),但在 localStorage 中它只是第一行的值。
但是,由于某种原因,我在传递第二个表格行的值时遇到了麻烦。
-
当然,如果有什么我应该得到最后一行的值,而不是第一行的值,因为循环至少运行一次,但我似乎得到的只是来自第一个循环的数据。希望这一切都有意义,并提前感谢。
- 在屏幕截图中,您可以看到左侧的 echo 输出与本地存储中存储的值不对应。
【问题讨论】:
-
对于 downloader.php,浏览器看到的 HTML/Javascript 是什么样的?请提供一个 Minimal, Complete, Tested and Readable example 来证明该问题。
-
我已经编辑了它,希望我的问题现在更清楚了。
-
您是否通过回显屏幕检查了循环外的返回值
-
我试过了,回显显示第二行的值,而在存储中它仍然有第一行的值两次...我编辑了 OP,因为我想也许我需要仅在数组已满时才存储数组,但这也无济于事
-
我会附上截图,一秒更清楚地说明问题
标签: javascript php arrays google-maps local-storage