如何用PHP接收XMLHttpRequest?

时间:2010-05-24 05:21:54

标签: php xml ajax xmlhttprequest prototypejs

我希望能够读取发送到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 />

4 个答案:

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