簡體   English   中英

$ _POST不反映使用jQuery post ajax發送的數據

[英]$_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
    }
);

只有兩個被發送到服務器的價值觀- hoursmemberID

但是,您聲明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.

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