我正在尝试通过 URL 将表和数据库变量传递到新页面,以便我可以使用 $_GET
动态查询指定的数据库和表。我尝试使用 JavaScript 来保存变量并将它们附加到页面 window.onload
但 error_log
说 Undefined index: db & tbl
我认为这意味着变量没有正确传递。
因此我问是否可以使用提交表单操作而不是使用 JavaScript 来传递这些变量?或者如何修复脚本以正确传递变量?
我的表单
<form method="post" action="db_search.php">
Search : <input type="text" name="name" id="name" autocomplete="off"
value="<?php echo $val;?>"> <input type="submit" name="submit"
id="submit" value="Search">
</form>
db_search.php 中的脚本
function pageSet () {
var yourTbl = window.sessionStorage.getItem("tbl");
var yourDB = window.sessionStorage.getItem("db");
window.location.href ='db_search.php?db=' + yourDB + '&tbl=' + yourTbl ;
};
window.onload=pageSet();
当 db_search.php
加载时,变量会附加到 URL,但页面会不断刷新。
最佳答案
您可以调整 PHP 以使用 $_REQUEST
并调整表单,如下所示:
<form method="post" action="db_search.php">
<input type="hidden" name="db" value="<?php echo $_REQUEST['db'] ?>" />
<input type="hidden" name="tbl" value="<?php echo $_REQUEST['tbl'] ?>" />
Search : <input type="text" name="name" id="name" autocomplete="off"
value="<?php echo $val;?>"> <input type="submit" name="submit"
id="submit" value="Search">
</form>
这会将 $_GET
参数添加为 $_POST
参数。您的脚本将匹配 $_REQUEST
参数,因此 $_POST
和 $_GET
出现的“db”都会被使用。在 $_REQUEST
中,$_POST
优先于 $_GET
。
具体化:
//You now match db like:
$db = $_GET['db'];
// Change that to
$db = $_REQUEST['db'];
这样无论是通过GET还是POST发送db,都会被填满
关于javascript - 使用表单提交操作传递 $_GET 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118313/