目前,我试图在网页中创建一个调查。在调查结束时,用户可以用值填充两个文本字段。有了这些值,我的计划是计算一个输出,并在同一页面上为它们显示。因此:
输入:
输入: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,所以它不会主动做任何事情)