簡體   English   中英

無法獲取 AJAX 發送的 php POST

[英]Can't get php POST sent by AJAX

我知道這里有很多類似的問題,但我查了 20 多個,沒有任何解決方案適合我。

問題是:我正在向我的 index.php 發送一個 ajax 帖子值。 當我查看 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>

此代碼不會嘗試將其打印到頁面上,而是在 ajax 響應中簡單地在整個 HTML 文檔前面加上“clicked”字符串。 如果要在瀏覽器中顯示此內容,則需要將該數據打印到頁面上。 如果您檢查 FireBug 中的控制台,您將看到對 Ajax 調用的響應正是我上面描述的。

現在,如果您想將該值打印回您的頁面,這是我的建議,您可以創建一個單獨的文件ajax.php

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

並修復您的 index.php 以包含一些您要將該值打印到的元素。 即在您之后添加<div id="response-results"></div> 元素。 然后將您的 Ajax 調用更改為ajax.php ,而不是 index.php 。

現在您需要將 Ajax 響應填充到呈現的頁面,這可以簡單地使用 jQuery 完成,例如:

$("#response-results").html(data);

當然,這會進入 ajax 調用的成功處理程序。

正如Jay Blanchard所說,您正在使用 AJAX 將變量發送到已在瀏覽器上呈現的頁面。 這永遠不會起作用,因為您從中獲取變量的 PHP 已在服務器端運行並通過 AJAX 返回,而不是在您當前查看的頁面中。 試試這個它會起作用:

索引.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>

正如RJ評論的那樣,我不可能做我想做的事情。

發生這種情況是因為一旦我的頁面被加載,頂部的 PHP 腳本就會被處理,但我的 POST 上沒有任何內容。

在我調用 Ajax 之后,頁面再次呈現,但頂部的 PHP 腳本不會得到任何東西,因為它是SERVER SIDE 結果我什至可以在頁面上打印出我的 Ajax 數據,但是 PHP $_POST 永遠不會得到它的值。

謝謝你們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM