我试过
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”在两种情况下都保持为空。
答案 0 :(得分:2)
你没有传递任何帖子变量所以$ _POST是空的吗?
尝试以下方法:
xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
更多信息:
答案 1 :(得分: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"]
答案 2 :(得分:0)
您要发布原始数据,而不是urlencoded或多部分表单数据,因此不会填充$_POST
。
你可以:
file_get_contents('php://input')
获取原始数据后者可能在您的情况下更可取。