我正在尝试编写一个与库交互并从中获取值的应用程序,而且我似乎无法弄清楚如何在单击按钮时执行php脚本。
的index.html
Chapter: <input type="text" name="chapter"><br>
Section: <input type="text" name="section"><br>
Problem: <input type="text" name="problem"><br>
<input type="button" class="button" name="insert" value="Get Input"
onClick="doStuff()"/>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
function doStuff()
{
var v1 = document.getElementById('chapter').value;
var v2 = document.getElementById('section').value;
var v3 = document.getElementById('problem').value;
$.ajax({
type: "POST",
url: "get-data.php",
data: {chapter:v1,section:v2,problem:v3},
success: function(data) {
alert(data);
}
});
}
</script>
GET-data.php
<?php
function doit()
{
$chapter=$_GET['chapter'];
$section=$_GET['section'];
$problem=$_GET['problem'];
$command = "python proc.py init $chapter $section $problem";
$output = exec($command);
echo $output;
}
doit()
?>
确认python脚本正常工作,并且使用<form action="get-data.php">
确认php脚本正常工作,但它总是重定向到输出为echo
的简单页面。 / p>
答案 0 :(得分:1)
您正在尝试获取变量,就好像它们在使用POST时通过GET请求传递给PHP一样,将PHP更改为以下内容。使用filter_input
应用一些安全措施:
<?php
function doit()
{
$chapter=filter_input(INPUT_POST, 'chapter');
$section=filter_input(INPUT_POST, 'section');
$problem=filter_input(INPUT_POST, 'problem');
$command = "python proc.py init $chapter $section $problem";
$output = exec($command);
echo $output;
}
doit();
?>
注意:这些安全措施可能还不够,您应该确保不会将危险的关键字传递给脚本。
答案 1 :(得分:0)
你应该使用$ _POST而不是$ _GET在php页面中接收值,因为在你写的ajax请求中你使用的是type =“POST”。
答案 2 :(得分:0)
正如其他人已经回答的那样,当您使用$ _GET时,AJAX使用HTTP / POST发送数据。
但是,如果出于某种原因(如手动测试),您希望页面处理来自POST和GET请求的两个参数,则可以使用$ _REQUEST而不是$ _GET。