使用php计算html文本字段的输入


Calculate input of html text fields with php

目前,我试图在网页中创建一个调查。在调查结束时,用户可以用值填充两个文本字段。有了这些值,我的计划是计算一个输出,并在同一页面上为它们显示。因此:

输入:

输入:b

结果:ab+b-ab(请不要集中,这只是一个例子)

我的计划是,用户可以填充两个输入字段,通过单击按钮,php函数将计算结果字段(根据输入使用我自己的算法-这已经有效了)并填充该字段。为此,我必须链接到另一个网页吗?如何获取这两个输入值并将其提供给我的php函数?最后,如何启动嵌入html或自己文件中的php函数?

我尝试了你的解决方案和其他一些解决方案(使用document.getElementById从DOM中获取inputA和inputB不起作用

<form>
    InputA:<br>
    <input type="text" id="inputA"/></br>
    InputB:<br>
    <input type="text" id="inputB"/></br>
    Output:<br>
    <input type="text" id="output"/>
</form> 
<input name="go" type="button" value="Calculate" id="calculate" >
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js" ></script>
<script type="text/javascript">
$("#calculate").click(function(){
        $.get( "submit.php", { value1: $("#inputA").val(), value2: $("#inputB").val() } )
        .done(function( data ) {
        $("#output").val(data);
    });
});
</script>

submit.php:

<?php 
        $value1 = $_POST['value1'];
        $value2 = $_POST['value2'];
        $output = $value1 + $value2;
        echo($output);
    }
?>

当我用firebug检查错误时,我在两个(html和php)文件中都得到了一个:no元素未发现异常。问题似乎是,使用:value1:$("#inputA").val();没有向服务器提供任何值,或者无法在那里进行处理。

如果我从DOM中获取值,我可以将该值"带入".click函数,但通过调用submit.php.仍然存在"未发现元素异常"

我不知道自己做错了什么,有什么建议吗?使用JQuery需要在中安装/绑定任何东西吗?


经过一些额外的更改,它终于工作了(一件事是submit.php文件中的标题行):

<form>
    WorkerID:<br>
    <input type="text" id="workerId"/></br>
    CampaignId:<br>
    <input type="text" id="campaignId"/></br>
    Payment Code:<br>
    <input type="text" id="payCode"/>
</form> 
<input name="go" type="button" value="Calculate" id="calculate" >
<script type="text/javascript">
$("#calculate").click(function(){
    $.get( 'submit.php', { wId: $('#workerId').val(), cId: $('#campaignId').val()} )
    .done(function( data ) {
        $('#payCode').val(data.payCode);
    });     
});

和submit.php:

<?php 
    header('Content-Type: text/json');
    $workerId = $_GET['wId'];
    $campaignId = $_GET['cId'];
    $payCode = $campaignId . $workerId;
    $result = array("status" => "success",
                    "payCode" => $payCode);
    echo json_encode($result);
?>

为了简化,我使用的是jQuery,在我看来,用香草JS做这件事真的很痛苦。

您可以使用.get(),这是.ajax()的GET简写。

使用该代码,您可以在提交按钮上绑定一个处理程序,向PHP发出AJAX请求,并将PHP给出的结果异步填充到结果字段中。

$("#calculate").click(function(){
  $.get( "path/to/your_php.php", { value1: $("#inputA").val(), value2: $("#inputB").val() } )
  .done(function( data ) {
    $("#output").val(data);
  });
});

还可以将您的提交更改为这样的内容:

<input name="go" type="button" value="Calculate" id="calculate" >

像这样,你的按钮不会提交表单,因此会同步加载你的PHP。

由于您似乎是JavaScript新手,并且您有以下评论

我的按钮,但在这里我被重定向到提交,不知道如何返回到之前的页面,并填写文本字段

在您的问题中,我会告诉您,JavaScript在加载DOM(文档对象模型)时起作用,这意味着您可以在已经加载时访问元素并对其进行更改。

获取输入的值就像在jQuery:中一样简单

$("#inputA").val();

使用AJAX,您可以获得php将在data中返回的内容。

// the { value1: $("#inputA").val(), value2: $("#inputB").val() } object
// is what you send to your PHP and process it
$.get( "path/to/your_php.php", { value1: $("#inputA").val(), value2: $("#inputB").val() } )
.done(function( data ) {
     // data is what your php function returned
});

使用JS,您现在可以像刚才所说的那样更改元素,这实际上意味着在这里更改输出的值:

$("#output").val(data);

"工作"示例:JSFiddle(没有可访问的PHP,所以它不会主动做任何事情)