为了账号安全,请及时绑定邮箱和手机立即绑定

JSON 到 PHP API 没有发生

JSON 到 PHP API 没有发生

PHP
波斯汪 2021-06-04 13:27:57
我正在尝试使用 Javascript 和 PHP 单击按钮保存数据。按钮点击:            var xhr = new XMLHttpRequest();            var url = "savedata.php";            xhr.open("POST", url, true);            xhr.setRequestHeader("Content-Type", "application/json");            /*xhr.onreadystatechange = function () {                if (xhr.readyState === 4 && xhr.status === 200) {                    var json = JSON.parse(xhr.responseText);                    console.log(json.rawText + ", " + json.convertedText);                }            };*/            var data = JSON.stringify({"rawText": rt, "convertedText": ct});            xhr.send(data);保存数据文件<?phpheader("Content-Type: application/json");require('db/db.php');session_start();    $saverawText = $_POST['rawText'];    $saveConvertedText = $_POST['convertedText'];    $ins_query="insert into cmn_data (`rawtext`,`convertedtext`) values ('$saverawText','$saveConvertedText')";    $result = mysqli_query($con, $ins_query);?>在 Db 中:创建了一条记录但它是空的,所以每次我单击保存按钮时,都会创建 1 条记录但它是空的。上面的语法有什么问题?
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

PHP 不会将 JSON 请求解析为 $_POST 数组本身。您应该在 php 中解析请求正文:


$request = json_decode(file_get_contents('php://input'), true);

$saverawText = $request['rawText'];

$saveConvertedText = $request['convertedText'];

或使用 FormaData 对象传递数据以请求:


var data = new FormData();

data.append("rawText", rt);

data.append("convertedText", ct);

xhr.send(data);

并且如前所述,将用户输入直接包含到 sql 中可能会导致 sql 注入。使用mysqli_real_escape_string来转义用户输入或 PDO 驱动程序,这是更复杂但更可靠的方法。


查看完整回答
反对 回复 2021-06-13
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您可以像这样发布您的值:


var xhr = new XMLHttpRequest();

var url = "savedata.php";

xhr.open("POST", url, true);

xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

/*xhr.onreadystatechange = function () {

    if (xhr.readyState === 4 && xhr.status === 200) {

        var json = JSON.parse(xhr.responseText);

        console.log(json.rawText + ", " + json.convertedText);

    }

};*/

var data = "rawText=" + rt + "&convertedText=" + ct;

xhr.send(data);


查看完整回答
反对 回复 2021-06-13
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信