[英]$_POST doesn't reflect data being sent with jQuery post ajax
我正在使用ajax / json將值發送到php函數,該函數隨后將在頁面上顯示數據。 我正在發送兩個值$hours
和$memberID
,除了我似乎只能檢索$hours
而不是$memberID
。 我在Firebug中運行了該頁面,在javascript頁面上,兩個變量的值都在發送之前就已讀取。 在PHP表單中,我運行了多個條件/回顯語句以打印出兩個值,但僅顯示$hours
。 有任何想法嗎?
PHP:
$result = array();
if(!empty($_POST['hours'])) {
$result['type'] = "success";
$result['memberID'] = (int)$_POST['memID'];
$result['hours'] = (int)$_POST['hours'];
$result = json_encode($result);
echo $result;
}
Javascript:
//numberofMembers is the total number of entries in the database
function subtractHours(numberofMembers) {
document.body.style.cursor = "wait";
var hours = document.getElementById("hours");
var i = 1;
var studentID;
while(i < numberofMembers) {
studentID = document.getElementById("member"+i);
alert(studentID.value);
if(studentID && studentID.checked) {
$.ajax({
type : 'post',
datatype: 'json',
url : 'hours_subtract.php',
data : {hours : hours.value, memID : studentID.value},
success: function(response) {
if(response == 'success') {
alert('Hours subtracted!');
} else {
alert('Error!');
}
}
});
//$.post( "subtract.php", {person: personId, personSalary: personSalary} );
}
i++;
}
}
PHP(HTML格式):
echo "<input type='checkbox' name='member{$attNumber}' id='member{$attNumber}' value=$studentID/>$attendees<br />";
編輯:如果我運行var_dump($_POST['memberID']);
,它打印出NULL
。 如果我運行var_dump($_POST)
,它將打印出array(2) { ["hours"]=> string(1) "1" ["member3"]=> string(8) "5101813/" }
。
編輯:我添加了使用member3
的PHP代碼。 編輯2:這就是整個Javascript函數。 PHP代碼是我處理數據所需的全部。
使用jQuery Ajax時,如果要發送的數據參數之一為null或未定義,則將其丟棄,而不發送給服務器。 由於您沒有在PHP(服務器端)中獲得此屬性,因此很可能在初始客戶端頁面上未正確設置該屬性。
memberID.value // check this value
您可以檢查memberID.value是否返回預期值?
我的網站上也有類似的問題。 事實證明,我的ajax請求沒有像我期望的那樣通過$_POST
流發送數據。 它實際上是通過請求正文發送的。
要訪問它,我必須執行以下操作:
json_decode(file_get_contents(“php://input”));
這從請求主體中獲取信息,並將json數據(這是我將數據發送到服務器的格式)解碼為PHP可以使用的格式。 不確定,但是您可能遇到類似的問題。
問題在於您的示例並未真正向我們顯示您正在使用的代碼。
以下內容重復了您的AJAX請求,這是此問題的本質:
$.post(
'hours_subtract.php',
{
hours : "test-val-1",
memberID : "test-val-2"
},
function(resp) {
// Handle the response
}
);
只有兩個被發送到服務器的價值觀- hours
和memberID
但是,您聲明var_dump($_POST)
顯示:
{ ["hours"]=> string(1) "1" ["member3"]=> string(8) "5101813/" }
但是在您的ajax請求中,沒有此類member3
,並且$ _POST中不存在memberID
。 正如其他人提到的那樣,memberID的值可能為null且未發送-但這不能解釋member3
來源。
我建議弄清楚為什么那里有member3
,它來自哪里,並在javascript端對memberID
值進行調試,以找出它是否為null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.