我已经为地址数据构建了一个HTML表单,我想在通过POST变量将所有表单字段提交到SQL数据库之前计算地址的纬度和经度。
现在我的控制台显示我已成功编辑了带有lat / lng值的隐藏“latInput”和“lngInput”字段DOM。但是,我的PHP脚本中的POST变量没有捕获到该更改。
隐藏的表单字段:
<input type="hidden" name="latInput" id="latInput" value="">
<input type="hidden" name="lngInput" id="lngInput" value="">
jQuery设置/检查DOM更新到隐藏字段:
//insert new lat/lng variables to the hidden form inputs, so PHP can access POST and insert into SQL database
$("#latInput").attr('value',localLat);
$("#lngInput").attr('value',localLng);
//confirm hidden input fields were set with lat/lng values
console.log("latInput set to: " + $("input[name=latInput]").val());
console.log("lngInput set to: " + $("input[name=lngInput]").val());
PHP脚本检查lat / lng的POST变量,并将所有字段提交到数据库:
$lat = $_POST['latInput'];
$lng = $_POST['lngInput'];
echo('<p>POST variable for lat = '.$lat.'</p>');
echo('<p>POST variable for lng = '.$lng.'</p>');
//choose SQL fields (column names), then choose HTML form fields ("name" attribute)
$sql = "INSERT INTO $tablename (name,address1,city,state,zip,latitude,longitude) VALUES ('$_POST[firstName]','$_POST[address1]','$_POST[city]','$_POST[state]','$_POST[zipCode]','$_POST[latInput]','$_POST[lngInput]')";
请注意 - 所有其他表单字段(地址1,城市等)都成功传递POST变量并在提交时输入数据库。即使DOM正在为隐藏的latInput和lngInput字段进行更新,这也不会触及我的本地$ lat和$ lng变量。 POST仍然没有返回任何值。我尝试使用如下虚拟数据更新原始隐藏的latInput和lngInput字段,并且虚拟数据通过正常。
虚拟数据:
<input type="hidden" name="latInput" id="latInput" value="1.234">
<input type="hidden" name="lngInput" id="lngInput" value="2.345">
为什么会这样下降?
感谢您的帮助!
答案 0 :(得分:1)
我遇到了同样的问题。 This answer帮助了我。解决方案是使用 名称 选择器而不是 id 。
的形式:强>
<form id="my-form" action="post">
<input type="hidden" name="latInput">
<input type="hidden" name="lngInput">
<input type="submit" value="Submit">
</form>
<强> JQuery的强>
$('#my-form input[name=latInput]').val(localLat);
$('#my-form input[name=latInput]').val(localLng);
这些值将成功传递给POST。
答案 1 :(得分:0)
设置输入值的正确方法是使用val()
函数。
$("#latInput").val(localLat);
$("#lngInput").val(localLng);