我正在嘗試使用 AJAX 將文本字串傳遞給 PHP 變數,但在 POST 觸發時我不斷收到此錯誤:
警告:未定義的陣列鍵“mydata”
警報觸發并正確顯示值,但隨后 PHP 頁面顯示上述錯誤。這里出了什么問題?
阿賈克斯:
$("#display_tasks").click(function() {
var name = $(this).text();
var namecut = name.substr(0,name.indexOf(' |'));
$.ajax({
type: 'POST',
url: 'opentask.php',
data: {mydata : namecut},
success:function(data) {
alert(data);
}
});
});
PHP:
$taskname = $_POST['mydata'];
echo $taskname;
uj5u.com熱心網友回復:
請從以下行中洗掉(您只需要 ajax 來呼叫 opentask.php): href="opentask.php"
<a id="display_tasks" href="opentask.php">
其次,請isset在將其分配給 $taskname 之前使用檢查 $_POST['mydata'] 是否存在
所以請使用
<script
src="https://code.jquery.com/jquery-3.6.1.js"
integrity="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI="
crossorigin="anonymous"></script>
<?php
$displaytaskrowresult="ABCD | Text";
echo '<a id="display_tasks">'.$displaytaskrowresult.'</a>'; ?>
<script>
$("#display_tasks").click(function() {
var name = $(this).text();
var namecut = name.substr(0,name.indexOf(' |'));
$.ajax({
type: 'POST',
url: 'opentask.php',
data: {mydata : namecut},
success:function(data) {
alert(data);
window.location.href="opentask.php";
}
});
});
</script>
和
打開任務.php
<?php
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
$taskname = isset($_POST['mydata']) ? $_POST['mydata']: '' ;
echo $taskname;
?>
請訪問以下沙箱查看效果:
http://www.createchk.com/SOanswers/subj/test1.php
[補充點]
如果只是想測驗POST請求是否顯示在目標頁面,請使用表單提交。(因為 ajax 只會在成功塊中將結果回傳給呼叫頁面。)
uj5u.com熱心網友回復:
您$_POST['mydata']一直在使用,而不僅僅是在接收 AJAX 請求時使用。而當您只是顯示頁面時,超全域陣列 $_POST 還沒有一個由“mydata”索引的元素。這就是你得到錯誤的原因。
避免這種情況的一種方法是將 AJAX 接收請求分離到另一個檔案。這就像由幾個 PHP 應用程式完成的一樣。
一個更簡單的測驗方法是檢查 $_POST,例如你可以這樣做:
if (!empty($_POST)) {
$taskname = $_POST['mydata'];
echo $taskname;
}
這樣,您只$_POST['mydata在收到 POST 時才嘗試使用 ]`。此外,如果元素“mydata”不存在,您仍然會收到未定義的陣列鍵錯誤。
uj5u.com熱心網友回復:
代替var name = $(this).text();
與var name= $(this).attr('value');
或
document.getElementById('name').value
name 是文本輸入名稱我認為這將起作用并測驗它是否首先通過 console.log(name) 獲取
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/535341.html
標籤:PHP查询阿贾克斯邮政
