Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP接收XMLHttpRequest?_Php_Xml_Ajax_Xmlhttprequest_Prototypejs - Fatal编程技术网

如何使用PHP接收XMLHttpRequest?

如何使用PHP接收XMLHttpRequest?,php,xml,ajax,xmlhttprequest,prototypejs,Php,Xml,Ajax,Xmlhttprequest,Prototypejs,我希望能够阅读发送到PHP页面的XMLHttpRequest。我正在使用prototype的Ajax.Request函数,并发送一个简单的XML结构 当试图在PHP页面上打印POST数组时,我没有得到任何输出 谢谢你的帮助 编辑:下面是我的代码 <html> <head> <SCRIPT type="text/javascript" src="prototype.js"></script> </head> <body>

我希望能够阅读发送到PHP页面的XMLHttpRequest。我正在使用prototype的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>

var xml='';
xml=xml+“”;
xml=xml+“你好”;
xml=xml+“”;
xml=xml+“”;
var myAjax=new Ajax.Request('http://localhost:8080/post2.php',{
contentType:'text/xml',
参数:xml,
方法:“post”,
onSuccess:function(transport){alert(transport.status);alert(transport.responseText);}
});
post2.php

Welcome <?php print_r($_POST); ?>!<br />
欢迎

您可以使用
输入://
包装器或。

您将以读取普通请求变量的方式读取它

$\u GET['varname']
$\u POST['varname']

当您使用“方法: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的消息“heyathere”,而不使用XML


编辑:在这里可以找到所有Ajax。请求选项:

php://input 允许您读取原始POST数据,如

Welcome <?php print(file_get_contents('php://input')); ?>!<br />
欢迎

注:php://input 不适用于enctype=“多部分/表单数据”

除非我做错了什么,否则当我打印\u r$\u POST时,我只会得到一个空数组。在我的ajax调用中,我的参数应该是格式为“…”的xml字符串,对吗?谢谢您的输入。您可以尝试
打印($\u GET)
,只是想看看它是否通过GET发送。比如@Adrian,我得到了一个空字符串。谢谢您的回复,请查看上面的代码编辑。这样您就得到了欢迎数组()!结果呢?是的,约瑟夫,这正是我得到的。我希望能找回xml。由于我被迫使用的服务器,这需要是文本/xml内容类型。Col所指的是:直接从文档中可以看出,“警告:此功能在PHP5.6.0中被弃用,并从PHP7.0.0起被删除。”$rawData=file_get_contents('php://input'); // 完美投票:)