猿问

JSON 到 PHP API 没有发生

我正在尝试使用 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);

保存数据文件


<?php

header("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 条记录但它是空的。上面的语法有什么问题?


波斯汪
浏览 125回答 2
2回答

UYOU

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 驱动程序,这是更复杂但更可靠的方法。

Smart猫小萌

您可以像这样发布您的值: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 () {&nbsp; &nbsp; if (xhr.readyState === 4 && xhr.status === 200) {&nbsp; &nbsp; &nbsp; &nbsp; var json = JSON.parse(xhr.responseText);&nbsp; &nbsp; &nbsp; &nbsp; console.log(json.rawText + ", " + json.convertedText);&nbsp; &nbsp; }};*/var data = "rawText=" + rt + "&convertedText=" + ct;xhr.send(data);
随时随地看视频慕课网APP
我要回答