[英]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.