使用json作为ajax中的数据类型

时间:2016-02-04 07:13:30

标签: php jquery json 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返回数据附加我的表格。

1 个答案:

答案 0 :(得分:0)

我不确定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代码 - 而不是尝试从insert语句返回数据,也许你可以将自己的数据数据发送回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 ) );