Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';无法获取AJAX发送的php帖子_Javascript_Php_Jquery_Ajax_Post - Fatal编程技术网

Javascript Can';无法获取AJAX发送的php帖子

Javascript Can';无法获取AJAX发送的php帖子,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,我知道这里有很多类似的问题,但我查了其中20多个,没有一个解决方案对我有效 问题是:我向index.php发送了一个ajax post值。当我查看Firebug时,值就在那里,但是当我尝试在页面上回显它时,帖子是空的。我真的被这件事搞砸了 以下是我的完整代码: <?php if(isset($_POST['action'])) { echo $_POST['action']; } ?> <!DOCTYPE html> <htm

我知道这里有很多类似的问题,但我查了其中20多个,没有一个解决方案对我有效

问题是:我向index.php发送了一个ajax post值。当我查看Firebug时,值就在那里,但是当我尝试在页面上回显它时,帖子是空的。我真的被这件事搞砸了

以下是我的完整代码:

<?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>

试验
$(文档).ready(函数()
{
$('a')。在('click',function()上
{                
$.ajax({
url:'index.php',
键入:“POST”,
数据:{操作:'单击'},
成功:功能(数据)
{
控制台日志(数据);
警惕(‘完成’);
},
错误:函数(jqXHR、textStatus、errorshown)
{
警报(错误抛出);
}
});
返回false;
});
});

此代码不尝试将其打印到页面,而只是在ajax响应中用一个“clicked”字符串在整个HTML文档前面加上前缀。如果要在浏览器中显示,需要将该数据打印到页面中。如果您在FireBug中检查控制台,您将看到Ajax调用的响应正是我上面描述的

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

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

当然,这涉及ajax调用的成功处理程序。

正如
Jay Blanchard所说

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

<?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="#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>
index.php:

<?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="#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>

main.html:

<?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="#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>

试验
$(文档).ready(函数()
{
$('a')。在('click',function()上
{                
$.ajax({
url:'index.php',
键入:“POST”,
数据:{操作:'单击'},
成功:功能(数据)
{
//控制台日志(数据);
$(“#结果”).html(数据);
},
错误:函数(jqXHR、textStatus、errorshown)
{
警报(错误抛出);
}
});
返回false;
});
});
正如我所评论的,我不可能做我想做的事

这是因为一旦我的页面被加载,顶级PHP脚本就会被处理,但我的帖子上什么都没有

调用Ajax后,页面再次呈现,但顶级PHP脚本将一无所获,因为它是服务器端。事实证明,我甚至可以在页面上打印我的Ajax数据,但PHP$\u帖子永远不会得到它的价值


谢谢大家。

您正在使用AJAX将变量发送到已在浏览器上呈现的页面。这永远不会起作用,因为从中获取变量的PHP已经在服务器端运行并通过AJAX返回,而不是在当前查看的页面中。问题是我不需要在页面上打印值。我只需要在帖子上使用这个值,就可以用它做另一个逻辑。明白了吗?你有没有检查Firebug中Ajax调用的响应?还是在控制台里?那里印的是什么?在我看来,你在这里面临着一个完全不同的问题。