2013-12-13 73 views
0

我試圖爲什麼不內爆郵政工作?

JAVASCRIPT

str_objects = "some multiline text"; 

xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("POST", "127.0.0.1/index.php", false); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("str_objects="+encodeURIComponent(str_objects)); 

PHP

$str_map = $_POST["str_objects"]; 

file_put_contents("map.txt", $str_map); 

和:

JAVASCRIPT

str_objects = "some multiline text"; 

xmlhttp=new XMLHttpRequest(); 

xmlhttp.open("POST", "127.0.0.1/index.php", false); 

xmlhttp.send(str_objects); 

PHP

$str_map = file_get_contents('php://input'); 
file_put_contents("map.txt", $str_map); 

輸出文件「map.txt」在兩種情況下均爲空。

+2

什麼不行?你期望發生什麼?發生什麼事? –

+0

echo $ str_map應該回顯JS變量中的多行文本str_objects – user3100031

+1

在chrome中使用開發人員工具,轉到網絡..重新執行操作,並檢查是否確實傳遞了變量.. –

回答

2

你沒有傳遞任何後期變量,所以$ _POST是空的?

嘗試以下操作:

xmlhttp.open("POST","ajax_test.asp",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("fname=Henry&lname=Ford"); 

更多信息:

http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

+0

但我傳遞了變量str_objects,我認爲Array Post將包含我的多行文本中的行 – user3100031

+0

請參閱我的編輯@ user3100031 –

+0

也許最好能幫助OP解決他們的特定問題。 –

0

HTTP POST數據具有特定的格式。你給變量名稱和它們的內容。

你可以取代你的最後一行在你的JavaScript:

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("str_objects="+encodeURIComponent(str_obejects)); 

那麼你應該得到你的PHP腳本中的數據。

在第一行中,我們告訴它發送一個包含數據的標頭,告訴服務器它是urlencoded鍵值對。否則,服務器將不知道如何解釋它。

在發送行中,我們使用函數encodeURIComponent正確編碼傳輸內容,並給它起一個名稱str_objects發送數據本身。

在PHP端的數據將存儲在$_POST["str_objects"]

0

您正在發佈的原始數據,而不是url編碼或者多形式的數據,從而$_POST將不被填充。

您可以:

  • 變化中的JavaScript發送urlencoded的或多數據
  • 使用file_get_contents('php://input')得到的原始數據

後者可能是您的情況最好。