【问题标题】:Passing variable PHP, Javascript location.reload, and HTML input传递变量 PHP、Javascript location.reload 和 HTML 输入
【发布时间】:2015-04-08 09:50:50
【问题描述】:

我有一个通过单击按钮运行 MySQL 查询的页面。查询结果显示大约 6 列左右,大约 100 行。

我希望用户能够根据单击列标题来处理查询结果。几乎将它们发送到具有相同查询的同一页面,只是采取了。

这就是我目前所拥有的,都在同一个脚本中。

HTML 表格(在 PHP 中回显)

echo "<th id='frame_data_table'><a onClick='innerChange()' href='#'>Command</a></th>";


Javascript 函数

function innerChange() {
    document.getElementById("innerTest").value = "Changed it.";
    location.reload(true);
}

HTML 输入标签和 php 表单处理

<?php echo "-->" . $_POST['commandSort'] . "<--"; ?>
<form method="post">
    <input type="text" id="innerTest" name="commandSort" value="command" />
</form>

当我这样做时,当页面重新加载时,echo $_POST['commandSort'] 没有任何显示。既不显示原始值,也不显示更改后的值。

真的,我只需要$_POST['commandSort'] 来获取更改后的输入框的值,然后我可以实现将我想要的任何值放入我的查询中,以便按照我的意愿对其进行排序。

提前致谢!

-安东尼

================================================ ====================

更新:解决方案

使用document.getElementById['mainForm'].submit() 解决这个问题(归功于我选择作为答案的一位用户)。这是我所拥有的。

HTML 表单

<html>
<!--...some html code here...-->
<form method="post" id="mainForm" action="example.com/results.php">
  <!--...more code inside of the form here...-->
  <input type="checkbox" name="command" value="command" id="command"/><p>Command</p>
  <!--...more code inside of the form here...-->
  <input type="hidden" name="hiddenSort" id="hiddenSort" />
  <!--...more code inside of the form here...-->
</form>
<!--...some more html code here...-->
</html>

带有 Javascript 的 PHP example.com/results.php 页面

<?php
/*...more php code here...*/
<if (isset($_POST['command'])) {
  ?><th id="frame_data_table"><a href="javascript:sortFunction('command');">Command</a></th><?php
}
/*...more php code that displays the query result (while(...)) here...*/
?>

Javascript 函数

<script>
  function sortFunction(x) {
    var sortVar = x;
    document.getElementById("hiddenSort").value = x;
    document.getElementById("mainForm").submit();
  }
</script>

解释:获取并显示初始查询结果后,如果用户单击“命令”列链接,document.getElementById['mainform'].submit() 会重新提交与之前运行的相同的表单,同时将变量传递给javascript函数x。该变量决定了查询的处理方式,因为真正需要做的就是在 PHP 中用"ORDER BY " . $_POST['commandSort'] 填充一个变量。如果您遇到类似问题,请随时给我发消息以获得进一步的解释。

感谢所有回复的人。

-安东尼

【问题讨论】:

  • 难道您不需要提交表单而不是刷新页面吗?给表单一个 id 然后代替 location.reload 使用 document.getElementById("myForm").submit();

标签: javascript php html post reload


【解决方案1】:

$_POST['commandSort'] 为空,因为您没有提交表单,请尝试代替

location.reload(true);

document.forms["form1"].submit();

重命名

&lt;form method="post" id="form1"&gt;.

【讨论】:

  • 我猜这让我更接近了一点。我需要的仍然不起作用,但更具体地说,允许用户在表中查看查询结果的原始表单位于不同的文档 index.php 中,结果位于 results.php 中,其中包含 index.php在结果文件中。我是否可以在结果脚本(列链接所在的位置)中使用您的 document.forms[''].submit() 方法重新提交引用我在 index.php 中的原始表单的表单?
  • 我不明白你的页面方案,但如果你想提交另一个页面,你可以更改 action="page where i want to submit"。此外,您可以尝试更改系统,使用 Ajax 进行。
  • 我能够使用document.getElementById['formName'].submit() 完成此操作,几乎与您推荐的相同。完整的解决方案将放在原始问题中。谢谢!
【解决方案2】:

点击按钮即可:

window.location.href = window.location.href.replace( /[\?#].*|$/, "?q=mysort" );

并将排序选项设为$sort= $_GET['q'];

【讨论】:

    【解决方案3】:

    您确定要为此使用 JavaScript 吗?它可以用 HTML 和 PHP 来完成。

    例如。

    <tr>
    <th><a href="myfile.php?sort=blah1">Header Text 1</a></th>
    <th><a href="myfile.php?sort=blah2">Header Text 2</a></th>
    ..
    </tr>
    

    然后在 PHP 中,您可以通过以下方式检索该值:

    $sort = $_GET['sort'];
    

    【讨论】:

    • 我以前试过这种方式。我不太熟悉重新加载、刷新等......以及它是如何运作的,但是当我这样做时,查询不会随着正在重新加载的页面一起传递。
    • 我不知道你为什么要重新加载页面,你不只是点击标题文本然后转到带有 ?sort=blah 的页面并显示排序的行,按下f5 之后仍应对数据进行排序,因为 ?sort=blah 仍在 URL 中。同样这样你就不需要任何 JS,比如:location.reload 等。
    • 我也不知道为什么要重新加载页面,也不知道重新加载或您选择的方法之间的确切区别。我所知道的是,当我过去尝试过您的方法时,查询结果不再显示在页面上,但是当我使用location.reload 时,它会显示。查询是由用户高度定制的,允许用户选择他们想要的列,以及查询结果中显示的数据。我需要保留用户选择的查询结果,但要使用数据。我不知道如何使用您的方法并传递相同的结果。
    • 用户通过页面另一部分的复选框选择查询结果,并在某些列中准确显示什么。我想让用户选择点击其中一列的顶部来重新获取数据。
    • 你可以在 PHP 中构建链接的查询,包含来自 $_GET 的所有数据,并将其粘贴在链接中(仅使用 html / php)。
    猜你喜欢
    • 2014-12-23
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多