为什么我的PHP在AJAX调用时返回NULL?

时间:2017-03-02 09:24:19

标签: php jquery ajax

我正在尝试将数组从PHP返回到AJAX,但它返回NULL而不是我发送回AJAX的数据

这是我的代码

的header.php

<?php
  include_once("obtainData.php");
?>

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>AJAX CALL</title>

    <!-- JQuery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  </head>
  <body>

的index.php

<?php
    include_once("header.php");
?>

<div>
  <h3>AJAX CALL</h3>
  <p>
    <?php
      sendData();
    ?>
  </p>
</div>

<?php
    include_once("footer.php");
?>

footer.php

        <script>
            $.ajax({
              url: "obtainData.php",
              data: {action: 'sendData'},
              type: 'GET',
              success: function(data) {
                alert(data);
                alert("Success");
              },
              error: function() {
                alert( "Error." );
              }
            });
        </script>
    </body>
</html>

obtainData.php

<?php
    if(isset($_POST["action"])){
        $action = $_POST['action'];
        switch($action) {
            case 'sendData':
                sendData();
                break;
        }
    }

    function sendData(){
        $array = [];

        for($i = 0; $i < 20; $i++){
            $array[$i] = "prove";
        }

        echo json_encode($array);
    }
?>

如果我在嵌入式PHP上调用我的sendData方法,它会向我显示输出,但我无法从AJAX调用中获取它。

我错过了什么吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您在Ajax通话中使用type: 'GET',

你正试图在你的php文件中检索$_POST。这就是为什么一无所获。

type: 'GET',更改为type: 'POST',

答案 1 :(得分:2)

问题是因为您发送了GET请求,但使用$_POST来检索该值。因此isset($_POST["action"])始终为假。

使用$_GET检索PHP代码中的值,或更改jQuery以发送POST请求。