在 AJAX 中使用 JSON 作为数据类型


using json as datatype in ajax

我正在尝试将具有文本作为数据类型的AJAX脚本更改为JSON。

datatype:"text"运行良好,所以我尝试将其更改为以下脚本:

在 PHP 代码中:

header("Content-type: application/json");
$emp_name = $_POST['d1'];
$pos = $_POST['d2'];
$sal = $_POST['d3'];
$insert = "INSERT into emp(name, pos, sal) VALUES (:emp_name, :pos, :sal)";
$insertStmt = $conn->prepare($insert);
$insertStmt->bindValue(":emp_name", $emp_name);
$insertStmt->bindValue(":pos", $pos);
$insertStmt->bindValue(":sal", $sal);
$insertStmt->execute();
    //echo "success";
   while($row = $insertStmt->fetch())
   {
        $data[]=$row;
    }
    echo json_encode($data);

以下是我在 AJAX 脚本中更改的内容:

$("#btnClicked").click(function()
{
    var emp = $("#name").val();
    var pos = $("#pos").val();
    var sal = $("#sal").val();
    $.ajax
    ({
        url: 'insert.php',
        type: 'POST',
        data: {d1: emp, d2: pos, d3: sal},
        dataType: "JSON",
        function(data)
        {
            console.log(data);
        }
    });
});

我需要先在控制台中查看数据。

数据将添加到服务器,刷新时将显示在我的 html 表中,但它们不会出现在控制台中。

控制台中没有显示错误。

那么如何查看它们,以及如何用返回的数据附加json我的表。

我不确定 jQuery,但我认为该函数应该更像这样,带有success处理程序

$("#btnClicked").click(function(){
    var emp = $("#name").val();
    var pos = $("#pos").val();
    var sal = $("#sal").val();
    $.ajax({
        url: 'insert.php',
        type: 'POST',
        data: {d1: emp, d2: pos, d3: sal},
        dataType: "JSON",
        success:function(data){
            console.log(data);
        },
        error:function(err){alert(err)}    
    });
});

直到 Barmar 指出才注意到 php 代码 - 与其尝试从插入语句返回数据,也许您可以将自己的数据数组发送回 js 函数。

header("Content-type: application/json");
$emp_name = $_POST['d1'];
$pos = $_POST['d2'];
$sal = $_POST['d3'];
$insert = "INSERT into emp(name, pos, sal) VALUES (:emp_name, :pos, :sal)";
$insertStmt = $conn->prepare($insert);
$insertStmt->bindValue(":emp_name", $emp_name);
$insertStmt->bindValue(":pos", $pos);
$insertStmt->bindValue(":sal", $sal);
$insertStmt->execute();
echo json_encode( array('name'=>$emp_name, 'position'=>$pos, 'salary'=>$sal ) );