Javascript 表单在单击时工作,但不与JS提交一起工作

Javascript 表单在单击时工作,但不与JS提交一起工作,javascript,php,html,Javascript,Php,Html,长话短说,我正在涉猎一些HTML/PHP/JS,事情通常进展顺利。我在做一个模拟游戏,我在做游戏地图。Take 1绘制地图服务器端并在每次页面加载时将其传递给客户端,现在我正在尝试使用HTML5画布和客户端javascript来处理绘制 我希望能够让用户能够点击地图,并有一个新的页面加载,其中包含从数据库检索到的关于他们点击的网格内容的信息。使用服务器端方法,我使用服务器端地图传递单击坐标,并使用一些简单的数学计算出他们单击的网格 我已经或多或少地解决了如何从画布上的mousedown侦听器中获

长话短说,我正在涉猎一些HTML/PHP/JS,事情通常进展顺利。我在做一个模拟游戏,我在做游戏地图。Take 1绘制地图服务器端并在每次页面加载时将其传递给客户端,现在我正在尝试使用HTML5画布和客户端javascript来处理绘制

我希望能够让用户能够点击地图,并有一个新的页面加载,其中包含从数据库检索到的关于他们点击的网格内容的信息。使用服务器端方法,我使用服务器端地图传递单击坐标,并使用一些简单的数学计算出他们单击的网格

我已经或多或少地解决了如何从画布上的mousedown侦听器中获取单击坐标的问题,但现在我正尝试使用相同的函数更新一个表单以进行导航,然后使用javascript加载页面。表单工作(如果我在x/y坐标字段中键入-1,-1并单击go,我将获得关于网格-1,-1的信息,但是单击网格-1,-1不会正确传递POST变量(页面会刷新,但是脚本(php)中检查POST变量的部分找不到任何变量,但是如果单击go按钮,会找到它们)

画布和形式如下所示:



在PHP页面上检查
mapnav
,如下所示:

if(isset($_POST['mapnav']))
但是,如果使用Javascript提交表单,则不会设置按下按钮的值

可能的解决方案

  • 尝试其他条件以测试坐标是否存在
  • 尝试将某个值设置为隐藏的表单字段

只有在实际单击表单提交按钮时,
mapnav
的值才会发布

因此,您有几个解决方案选项:

然后建立一个新变量,该变量可能位于隐藏输入中,并在php中对此进行求值


或者您评估是否收到了
xcoord

的值。原因是,如果您不单击提交按钮,则未发布
mapnav
的值!因此,这些值实际上已传递,但只是mapnav变量未设置?如何适当地重新构造此代码以绕过该限制然后呢?是的,没错!我会在一秒钟内发布一些解决方案(可能几分钟…)isset($_Post['xcoord'])会让任何人畏缩吗,尽管没有明确检查y坐标?为什么不
if(isset($_Post['xcoord'])和&isset($_Post['ycoord'))
?我真的想不出一个设置了一个而另一个没有设置的场景。即使是空白提交尝试也不会将y坐标设置为空字符串,而不是null或unset或其他任何内容吗?最好是安全的,有人可以发布x坐标,但将y留空。如果您检查它,您可能会抛出错误,否则您可能会意外你的代码中有副作用。这很公平。我已经采用了这个解决方案,效果非常好。谢谢你的快速回复!