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

标签 javascript php ajax

我想使用 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/

相关文章:

javascript - ArgumentError(提供了零位置。无法构建 URI。) - 通过 AJAX 设计重置密码

javascript - ajax 错误回调中的重新抛出错误正在创建 Uncaught Error

javascript - 是否可以使用 jQuery/javascript 每隔 x 像素重复放置一个 DIV

javascript - 除非已经插入文档,否则将文档插入集合中?

javascript - 在 javascript 中添加值

php - 如何将 Google 自定义搜索集成到我的网站中?

php - 将ajax值发送到mysql

javascript - YUI 中类似 jQuery 的图像交换

PHP 析构函数显示错误?

php - 验证 facebook canvas 应用程序返回 ?code=