2013-04-03 77 views
0

我使用ajax/json將值發送到PHP函數,然後該函數會在頁面上顯示數據。我發送兩個值$hours$memberID,除了我似乎只能檢索$hours而不是$memberID。我通過Firebug運行頁面,在javascript頁面上,這兩個變量的值在發送之前正在被讀取。在PHP表單中,我運行了多個條件/ echo語句來打印出兩個值,只有$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代碼就是我用來處理數據的所有東西。

+0

如果你做了'var_dump($ _ POST ['memberID']);'?怎麼樣在'var_dump($ _ POST)顯示什麼;' – helion3

+4

你的SQL查詢在哪裏? –

+0

和你的html表格 – Miguelo

回答

0

當使用jQuery Ajax時,如果發送的數據參數之一爲空或未定義,它將被丟棄,並且不會發送到服務器。由於您沒有在您的PHP(服務器端)中獲取此屬性,因此很可能它沒有在initiali客戶端頁面上正確設置。

memberID.value // check this value 

你可以檢查memberID.value是否返回期望值?

0

我在我的網站上有類似的問題。事實證明,我的ajax請求沒有像我預期的那樣通過$_POST流發送數據。它實際上是通過請求主體發送的。

要訪問它,我必須做到以下幾點:

json_decode(file_get_contents(「php://input」)); 

這拉請求主體信息並解碼後的JSON數據(這是我將數據發送到服務器的格式)轉換成有用的東西由PHP。不知道,但你可能遇到類似的問題。

0

問題是你的例子並沒有真正向我們展示你正在使用的代碼。

下將複製您的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/" }

但你r ajax請求,沒有這樣的member3,memberID不存在於$ _POST中。正如其他人所提到的,也許memberID的值爲空並且未被髮送 - 但這並不能解釋member3來自何處。

我會建議找出爲什麼你有member3在那裏,它來自哪裏,並在JavaScript端進行memberID值調試,以確定它是否爲空。

+0

我現在所顯示的是'memberID',我不知道爲什麼它顯示爲'member3'。我可以改變它來顯示文本,比如'studentID'嗎? – Andrew

+0

我建議您不要繼續進行下一步工作,直到您可以找出未按預期顯示的原因。清理代碼並重新發布javascript/php,如果您願意的話。這通常是非常簡單的東西,所以如果$ _POST包含神祕數據,你需要弄清楚原因。 – helion3

+0

我想我找到了它,似乎是因爲我將'$ memberID'設置爲'document.getElementById(「member」+ i);',這就是'member3'的來源。 '我'只是一個我用來解析列表的變量。我將如何發送「我」到PHP文件? – Andrew