【问题标题】:Javascript button click change / create PHP variable on same pageJavascript按钮单击更改/在同一页面上创建PHP变量
【发布时间】:2017-10-13 15:42:48
【问题描述】:

过去一小时我搜索了 stackoverflow 并发现了类似的问题,但尝试解决方案只给了我错误 - 可能是因为我试图在同一页面上加载它。

我尝试将值保存到 JS 中的 cookie,然后将其加载到 php 中,也尝试通过 ajax 等。

根据我的阅读,它不能只在内部完成,因为 PHP 是服务器端,而 Javascript 是浏览器端。

我目前有一个 .html 页面,其中包含一个通过 POST 发送值的表单:

form.html

<form id="calc" form name="calculator" method="post" action="/calculate.php">

解决方案不是表单,我不能有隐藏字段,因为我需要用户输入。我可以有一个形式为 yes 的单选框,然后以这种方式获取值,但这不是我的问题。我的问题是如何获取用户的输入并将其转换为表单重定向到calculate.php的页面上的php:

calculate.php

<?php 
if(isset($_POST['submit'])){
    $x= $_POST['value']; 

echo "your something:";
echo $x;
?>

Click button below for option one to do this, or click two for that, or three for something else...
<button id="one"> one </button>

<script>
$(document).ready(
    function() {
        $("#one").click(function() {
            make php value 1
});
</script>

use php value from click

所以用户已经点击了提交。然后通过他们的输入重定向到 .php 页面,然后他们可以选择按钮 1、2 或 3,例如通过 javascript on calculate.php NOT 表单。

我的问题是我需要知道在同一页面上-calculate.php,在php 中单击了哪个按钮。这样我就可以使用他们的输入并根据哪个按钮用它做不同的事情。

是否可以通过单击calculate.php 本身的按钮来设置或创建一个值,而javascript 按钮在同一页面上产生一个php 值?是否需要通过ajax从external.php页面加载?有没有其他办法?

【问题讨论】:

  • 您不需要 javascript,只需将隐藏的输入放入您的表单中接收 $value 和您的迭代代码在表单之前进行 value。每次提交都会加1。
  • @CarlosAlexandre 我已经编辑了我的代码示例,因为我认为我没有正确解释它,用户已经点击了提交。然后在他们所在的页面上,可以通过javascript选择按钮1、2或3。我需要在同一页面上知道在 php 中单击了哪些按钮。
  • .form.htmlcalculate.php 上是否有带有123 的按钮?如果它们在表单上,​​您可以简单地将它们设为单选按钮并在$_POST 中传递值。如果他们在calculate.php,表单应该与问题无关,因为您只需在 JavaScript 中计算点击次数并将这些变量转换为 PHP 变量。
  • 再有一次,我会把全部责任交给 php。复选框/收音机的更改按钮,每个复选框都有一个名称,您可以在单击后在 php 中捕获该名称。如果您想要这么难的javascript,请使用您想要的名称放置隐藏的输入,当您单击按钮时,将值放入隐藏的相应输入中,然后使用 $('form').submit();
  • @Obsidian Age 表单与问题完全无关我只是不希望人们认为解决方案是表单,“只需在 JavaScript 中计算点击次数并将这些变量转换为 PHP变量。“这正是我需要的,你能详细说明一下最好的方法吗?

标签: javascript php html ajax cookies


【解决方案1】:

PHP 选项:

<?php 
if(isset($_POST['submit'])){
    $x= (isset($_POST['one'])) ? $_POST['one'] : '';
    $y = (isset($_POST['two'])) ? $_POST['two'] : '';
    $z = (isset($_POST['three'])) ? $_POST['three'] : ''; 

echo "your something:";
echo $x;
echo $y;
echo $z;
?>

<form name="calculator" method="post">
<INPUT TYPE="RADIO" NAME="one" VALUE="1"> ONE
<INPUT TYPE="RADIO" NAME="two" VALUE="2"> TWO
<INPUT TYPE="RADIO" NAME="three" VALUE="3"> THREE
<input type="submit" value="Submit">
</form>

JS模式:

if(isset($_POST)){
    $value= (isset($_POST['value'])) ? $_POST['value'] : '';
    $previous = (isset($_POST['previous'])) ? $_POST['previous'] : '';
    //play with value and previous one
     $x = //your algorithm;

echo "your something:";
echo $x;
?>

<form name="calculator" method="post">
<button type="button" value='1'>ONE</button>
<button type="button" value='2'>TWO</button>
<button type="button" value='3'>THREE</button>
<input name='value' type='hidden' value=''>
<input name='previous' type='hidden' value='<?= (isset($x)) ? $x : ''?>'>
</form>

<script>
$(document).ready(
    function() {
        $("button").click(function() {
            $('input[name=value]').val($(this).val());
            $('form').submit();
});
</script>

use php value from click

【讨论】:

  • 当按钮被点击时,它会丢失提交的第一个表单中的所有值吗?注意:未定义变量:$x
  • 您想存储之前点击的所有值吗?看,我在这里放了一个例子,你可以把这段代码放在你想改进你的架构的任何地方,因为这是一个不好的做法,将 js html 和 php 混入相同的代码等。这只是一个例子。
  • 是的,我仍然想要所有值,例如,用户输入了他们的 X 和 Y,然后我从第一个计算了他们的 Z 值。我想保留包括 $Z 在内的所有值,然后我想回显 $Z。然后我想要 3 个按钮,按钮一将执行 A 到 $Z,按钮二将执行 B 到 $Z,然后按钮三将执行 C 到 $Z。所以我需要将 1, 2, 3 存储为一个 php 变量,从中单击按钮,并且不会丢失我的所有数据。
  • 一个输入类型来存储你之前的值 '>
  • 我出错了,我在表格上有很多计算和变量,而不仅仅是 Z,还有其他方法吗?理想情况下,我宁愿不必提交所有值并重新计算。
猜你喜欢
  • 2022-06-10
  • 2018-11-21
  • 2015-10-16
  • 2016-09-18
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
相关资源
最近更新 更多