无法通过AJAX发送php POST

时间:2016-04-05 14:06:55

标签: javascript php jquery ajax post

我知道这里有很多类似的问题,但我查了20多个问题,没有解决方案适合我。

问题在于:我将一个ajax post值发送给我的index.php。当我看到Firebug时,值就在那里,但是当我尝试在页面上回显它时,POST是空的。我真的很喜欢这个。

这是我的完整代码:

<?php
    if(isset($_POST['action']))
    {
        echo $_POST['action'];
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <meta charset="utf-8">

    <!-- JQUERY LIBRARY AND SCRIPTS -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
    <a href="index.php">Test</a>

    <script type="text/javascript">
        $(document).ready(function()
        {
            $('a').on('click', function()
            {                
                $.ajax({
                    url: 'index.php',
                    type: 'POST',
                    data: {action: 'clicked'},
                    success: function(data)
                    {
                        console.log(data);
                        alert('Done!');
                    },
                    error: function(jqXHR, textStatus, errorThrown)
                    {
                        alert(errorThrown);
                    }
                });
                return false;
            });
        });
    </script>

</body>
</html>

3 个答案:

答案 0 :(得分:1)

此代码不会尝试将其打印到页面上,而只是在整个HTML文档中添加&#34;单击&#34;字符串,在ajax响应中。如果要在浏览器中显示此内容,则需要将数据打印到页面。如果您在FireBug中检查控制台,您将看到Ajax调用的响应正是我上面所描述的。

现在,如果您想将该值打印回您的网页,我建议您创建一个单独的文件 ajax.php

<div id="response-results"></div>

并修复index.php以包含要打印该值的元素。即在 元素之后添加$("#response-results").html(data); 。然后更改您的Ajax调用以转到 ajax.php ,而不是index.php。

现在你需要将Ajax响应填充到渲染页面,这可以通过jQuery简单地完成:

chdrive "y:\"

当然,这会进入ajax调用的成功处理程序。

答案 1 :(得分:0)

正如Jay Blanchard所说 您正在使用AJAX将变量发送到已在浏览器上呈现的页面。这将永远不会起作用,因为你从变量获取的PHP已经在服务器端运行并通过AJAX返回,而不是在你当前正在查看的页面中。 试试这个会起作用:

index.php:

<?php
    if(isset($_POST['action']))
    {
        echo $_POST['action'];
    }
?>

main.html:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <meta charset="utf-8">

    <!-- JQUERY LIBRARY AND SCRIPTS -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
    <a href="#123">Test</a>
    <div id="result"></div>

    <script type="text/javascript">
        $(document).ready(function()
        {
            $('a').on('click', function()
            {                
                $.ajax({
                    url: 'index.php',
                    type: 'POST',
                    data: {action: 'clicked'},
                    success: function(data)
                    {
                        // console.log(data);
                        $("#result").html(data);
                    },
                    error: function(jqXHR, textStatus, errorThrown)
                    {
                        alert(errorThrown);
                    }
                });
                return false;
            });
        });
    </script>

</body>
</html>

答案 2 :(得分:0)

正如R J评论的那样,不可能做我想做的事。

之所以发生这种情况,是因为一旦我的页面被加载,顶级的PHP脚本就被占用了,但我的POST上什么也没有。

在我调用Ajax之后,页面再次呈现,但顶级PHP脚本将无法获取,因为它的 SERVER SIDE 。事实证明我甚至可以在页面上打印出我的Ajax数据,但PHP $ _POST永远不会得到它的价值。

谢谢你们。