AJAX不执行php脚本

时间:2018-05-06 20:32:55

标签: javascript php html ajax

我正在尝试编写一个与库交互并从中获取值的应用程序,而且我似乎无法弄清楚如何在单击按钮时执行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>

3 个答案:

答案 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。

http://php.net/manual/en/reserved.variables.request.php