gpt4 book ai didi

javascript - 如何使用 POST 将数据发送到 php,然后使用纯 javascript 中的 GET 从 php 检索数据?

转载 作者:行者123 更新时间:2023-12-02 23:52:15 25 4
gpt4 key购买 nike

我想使用 POST 方法将数据发送到 php 服务器,然后从服务器检索数据,这次使用 GET 方法(我假设)。

这是 JS:

发送函数

function send(leURL, laValeur) {
try {
return new Promise(function(resolve, reject) {
var req = new XMLHttpRequest();
req.open('POST', leURL);
req.setRequestHeader("Content-Type", "application/json");
req.onreadystatechange = function() {
if (this.readyState == XMLHttpRequest.DONE && this.status == 200) {
document.getElementById("result").innerHTML = "Ok!";
}
};
jmail = JSON.stringify(laValeur);
req.send(jmail);
resolve("true");
});
}
catch (err) {
window.alert("erreur 2");
}
}

函数接收()

function recieve(laURL) {
try {
var reqt = new XMLHttpRequest();
reqt.open('GET', laURL);
reqt.onreadystatechange = function(e) {
if (this.readyState == XMLHttpRequest.DONE && this.status = 200) {
var rep = JSON.parse(this.responseText);
try {
window.alert(rep);
}
catch (e) {
window.alert("erreur 4");
}
}
}
reqt.send();
//return rep;
}
catch (e) {
window.alert("erreur 3");
}
}

函数调用:

//there's a form in the HTML (id="form")
document.getElementById("form").addEventListener('submit', function(evt) {
evt.preventDefault();
send(url, mail)
.then(recieve(url));
});

旧的 receive() 函数(用于测试目的):

function recieve(laURL) {
window.alert(laURL);
}

所以,只要我使用旧的 receive() 函数,我就可以 send() 打印“Ok!”并 receive() 创建一个警报,这让我认为它工作得很好。但现在我使用新的 receive() 函数,页面就会重新加载。 (甚至没有显示 catch block !)

这是 PHP :

<?php
if (!empty($_POST)) {
$var = //do something with the data, involving $_POST
echo $var;
}
else {
echo "Hello, there !";
}
?>

由于 $var 是根据第一个 HTTP 请求 (POST) 生成的,因此如何在 JavaScript 中检索它?

我怀疑该错误是由 php 引起的,或者是由于使用两个 XMLHttpRequest 引起的(我仍然不知道应该如何仅使用一个 HTTP 请求来执行此操作)

最佳答案

您的 PHP 将数据存储在变量中,回显它,然后退出。

至此,PHP程序结束,内存被清理,变量不再存在。

如果您希望数据可供其他请求使用,则必须将其存储在持久的位置,例如 session 或数据库。

如果您想使用单个请求,请在 readyStateChange 处理程序中读取 this.responseText

关于javascript - 如何使用 POST 将数据发送到 php,然后使用纯 javascript 中的 GET 从 php 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55589269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com