我想知道如何使用ajax和vanilla javascript将某些内容发送到php。 我问你,因为我刚刚找到了jQuery解决方案。
我知道,如果我想接收某些东西,它应该像这样:
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
this.responseText; // This is my response
}
};
xhttp.open("GET", "phpfile.php", true);
xhttp.send();
由于找不到任何东西,有人可以向我解释或将其发送给解决方案。
答案 0 :(得分:3)
第一种方法
要将数据从JavaScript发送到PHP(或任何其他脚本)应该与您发现的一样
xhttp.setRequestHeader('Content-type', 'application/json');
xhttp.send(JSON.stringify(params));
其中params
是一些JavaScript变量。 application/json
是JSON数据的数据类型。
在PHP方面,您也是正确的:使用JSON_decode()
获取与发送的JavaScript数据等效的PHP。
第二种方法(仅适用于GET请求)
GET数据被编码在URL中,因此另一种方法是将数据直接编码到PHP脚本的URL中。 (请勿对敏感数据执行此操作。)
Javascript:
xhttp.open("GET", "phpfile.php?x=2&y=3&z=4");
PHP:
$x = $_GET["x"];
$y = $_GET["y"];
$z = $_GET["z"];
因为您似乎不清楚如何使用第一种方法发送多个变量:
如果要发送多个变量,请将其放入对象或数组中(因为JSON.stringify()
仅接受一个(数据)参数,而不是逗号分隔的参数列表)。
// for example, to send the variables x, y, z
var xValue = 2;
var yValue = 3;
var zValue = 4;
xhttp.setRequestHeader('Content-type', 'application/json');
xhttp.send(JSON.stringify({ x: xValue, y: yValue, z: zValue }));
PHP:
$data = json_decode($_GET);
echo $data->x; // 2
echo $data->y; // 3
echo $data->z; // 4;
(免责声明:代码未经测试;我不确定是否在$_GET
变量中接收到数据。在PHP接收JSON数据的变量上使用json_decode()
。)