为什么不会爆炸邮政工作?

时间:2013-12-13 16:07:58

标签: php ajax string post implode

我试过

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”在两种情况下都保持为空。

3 个答案:

答案 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");

更多信息:

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

答案 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

你可以:

  • 更改JavaScript部分以发送urlencoded或multipart数据
  • 使用file_get_contents('php://input')获取原始数据

后者可能在您的情况下更可取。