JavaScript到PHP表单,基于用户输入

时间:2017-03-09 10:23:11

标签: javascript php database forms input

我的主页上有一个简单的表单( index.php ),只需一个用户输入。

_details

然后将该输入传递给 run.php ,其中显示内容并将其插入MySQL数据库。

但是,我需要在该用户输入上运行JavaScript函数,然后将结果(从JavaScript函数)输入到数据库中(以便将值从JavaScript传递给PHP)。

我最初在 run.php 中使用了JavaScript,它用于计算和显示值,但我无法将值传递给PHP以插入数据库。

根据我的阅读,您无法在同一页面上将JavaScript值传递给PHP,因为它需要某种<form action="/run.php" method="POST" target="_blank" <input type="text" name="userinput"> <button type="submit">Run!</button> </form> POST,所以我&#39 ; m尝试在主页 index.php 上运行JavaScript函数,然后使用隐藏的输入字段将值POST到 run.php 文件。

GET

该函数是JavaScript Promise:

<input id='hidden_input' type='hidden' name='final-calc' value='random(userinput)' />

我遇到的两个问题是:

  1. 我只能在用户输入值并提交表单后获得function random(userinput) { .... .then(function(userinput) { // Function needs to use the userinput from the form // calculations return X //(X being any random value) } } 值,因此我不相信我可以将userinput值传递给JavaScript函数仍然POST返回值?

  2. JavaScript函数是一个异步的Promise,但显然,这可能没有效果 - 所以它可能不是问题。

1 个答案:

答案 0 :(得分:0)

这里的关键是AJAX。您必须使用普通JS检索用户输入,进行所需的任何计算,然后将结果发送到PHP脚本。我留下了一个小提琴:https://jsfiddle.net/k5xd54eu/1/

<input type="text" id="userinput" name="userinput"/>
<button onclick="inputhandler();">TEST</button>

<script>
function inputhandler() {
  var text = document.getElementById('userinput').value;
  alert(text);

  /*DRAGONS BE HERE*/
  /*THEN*/
  /*USE AJAX HERE TO PASS THE RESULTS TO PHP SCRIPT*/
}
</script>

我没有解释如何实现AJAX调用来发送结果,主要是因为它也是一种品味问题。例如,你可以使用普通JS或jQuery这样的库(这是我个人的偏好,因为它非常干净和简单)。看看这里:

http://api.jquery.com/jquery.ajax/

在这里:

https://www.w3schools.com/jquery/jquery_ajax_intro.asp

了解更多信息。

编辑:由于我已经提到过AJAX,因此包含一些代码更为正确。所以我通常用于简单的POST(它基于jQuery库,所以要小心包含它):

var url = 'ajaxhandler.php';
var stuff = '1234abcd';

$.ajax({
        type: "POST",
        url: url,
        data: {stuff: stuff},
        success: function (data) {
           /*Do things on successful POST*/
        }
        });