我希望能够读取发送到PHP页面的XMLHttpRequest。我正在使用原型的Ajax.Request函数,我正在发送一个简单的XML结构。
当尝试在PHP页面上打印POST数组时,我没有得到任何输出。
任何帮助表示感谢。
编辑:以下是我的代码
<html>
<head>
<SCRIPT type="text/javascript" src="prototype.js"></script>
</head>
<body>
<script type="text/javascript">
var xml='<?xml version=1.0 encoding=UTF-8?>';
xml=xml+'<notification>';
xml=xml+'heya there';
xml=xml+'</notification>';
xml=xml+'</xml>';
var myAjax = new Ajax.Request('http://localhost:8080/post2.php',{
contentType: 'text/xml',
parameters: xml,
method: 'post',
onSuccess: function(transport){ alert(transport.status); alert(transport.responseText); }
});
</script>
</body>
</html>
post2.php
Welcome <?php print_r($_POST); ?>!<br />
答案 0 :(得分:3)
您将以与阅读正常请求变量完全相同的方式阅读它。
$_GET['varname']
和$_POST['varname']
答案 1 :(得分:3)
php:// input允许您读取原始POST数据,如
Welcome <?php print(file_get_contents('php://input')); ?>!<br />
注意:php://输入不适用于enctype =“multipart / form-data”。
答案 2 :(得分:1)
您可以将fopen()
与input://
包装或$HTTP_RAW_POST_DATA
一起使用。
答案 3 :(得分:1)
当您使用“method:post”并且想要发送帖子正文时,您需要参数postBody。所以这样的事情可能有用:
var myAjax = new Ajax.Request('http://localhost:8080/post2.php',{
contentType: 'text/xml',
postBody: xml,
method: 'post',
onSuccess: function(transport){
alert(transport.status); alert(transport.responseText);
}
});
但为什么要围绕您的内容构建XML文档?您可以使用postBody在没有XML arround的情况下发送消息“heya there”。
编辑:在这里您可以找到所有Ajax.Request选项:http://www.prototypejs.org/api/ajax/options