2014-01-09 48 views
0

我需要使用xhr.send(VALUE)來發送AJAX中的數據。我如何在PHP文件中獲取這些數據?在PHP中檢索AJAX數據

JS:

window.onload = function() { 
    var value = 'hello'; 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
     if(xhr.readyState == 4 && xhr.status == 200) { 
      alert(xhr.responseText); 
     } else { 
      alert("no"); 
     } 
    } 
    xhr.open('POST', 'json.php', true); 
    xhr.send(value); 

} 
+2

'的var_dump($ _ POST)' – hjpotter92

+1

你需要發送一個'key = value'類型對通過你的ajax請求。如果您僅發送一個裸值,它將不會顯示在$ _POST中。那些你必須從'php:// input'讀取。請記住,對於圍繞它們的所有花哨的東西,AJAX仍然只是一個HTTP請求,就好像你做了一個'

'提交。唯一的區別是它在後臺完成。 –

回答

1

如果你想看到的PHP頁面上的$_POST變量,你可以使用此代碼,以顯示他們所有,所以你可以直觀地看到自己的鑰匙和值

echo "<pre>"; 
print_r($_POST); 
echo "</pre>"; 

從那裏你將知道如何使用任何文件中的數據。你可以使用$_GET

+0

在這種情況下,PHP不會填充'$ _POST'數組,因爲他沒有正確發送數據。 –

+0

好的通話,我太習慣使用js庫發送數據。 – DNACode

1

你只是發送一個字符串到PHP文件。您不會將它作爲查詢字符串或內容類型發送,因此PHP不會填充$POST陣列。

你可以嘗試讀取原始數據後:

$post = file_get_contents('php://input'); 
echo $post; // hello 

或者,如果你想PHP來填充$_POST,你需要做在你的JavaScript一些額外的步驟。

window.onload = function() { 
    var value = 'hello'; 
    var xhr = new XMLHttpRequest(); 

    xhr.onreadystatechange = function() { 
     if(xhr.readyState == 4 && xhr.status == 200) { 
      alert(xhr.responseText); 
     } else { 
      alert("no"); 
     } 
    } 

    xhr.open('POST', 'json.php', true); 

    // Tell the server you are sending form data 
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    // Send it as a query string 
    xhr.send('value='+value); 
} 

然後在你的PHP中,你可以訪問$_POST['value']

echo $_POST['value']; // hello 
0

試試這個,有

取代你xhr.send JS

xhr.send('value='+value); 

PHP

echo($_POST['value']);