我不知道如何获得“Hello World!”在PHP中用于以下Javascript代码。
我知道如果内容类型是“application / x-www-form-urlencoded”,我可以使用$ _POST [''],但不能用于“text / plain”。
var xhr = new XMLHttpRequest();
xhr.open('POST', 'example.php', true);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.send('Hello World!');
答案 0 :(得分:7)
此PHP将从请求正文中读取原始数据:
$data = file_get_contents('php://input');
第3行:
xhr.setRequestHeader('Content-Type', 'text/plain');
不是必需的,因为发布纯文本会将内容类型设置为text / plain; charset = UTF-8
http://www.w3.org/TR/XMLHttpRequest/#the-send-method
答案 1 :(得分:4)
您的请求有很多问题。如果不使用application/x-www-form-urlencoded
,则无法发布数据。其次,“Hello World!”不会转义或附加到变量。
以下是将数据发布到服务器的javascript代码。
var xhr = new XMLHttpRequest();
var params = 'x='+encodeURIComponent("Hello World!");
xhr.open("POST", 'example.php', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", params.length);
xhr.setRequestHeader("Connection", "close");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
}
xhr.send(params);
您可以使用PHP中的$_POST['x']
来访问它。
或者,您可以使用以下代码来使用$_GET['x']
。
var xhr = new XMLHttpRequest();
var params = encodeURIComponent("Hello World!");
xhr.open("GET", 'example.php?x='+params, true);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
}
xhr.send(null);
GET更符合使用Content-type: text/plain
的想法。
答案 2 :(得分:0)
您可以尝试http_get_request_body
(http://php.net/manual/en/function.http-get-request-body.php)