Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.ajax函数在向web服务发送JSON对象时失败_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript $.ajax函数在向web服务发送JSON对象时失败

Javascript $.ajax函数在向web服务发送JSON对象时失败,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我编写了一个示例web服务来存储和检索数据。PHP web服务有两个脚本,分别名为getData.PHP和saveData.PHP,getData返回json响应,saveData将json对象保存到数据库中 getData.php <?php require_once ('../database.php'); mysqli_select_db($conn, $database); $query = "SELECT * FROM user ORDER BY id

我编写了一个示例web服务来存储和检索数据。PHP web服务有两个脚本,分别名为getData.PHP和saveData.PHP,getData返回json响应,saveData将json对象保存到数据库中

getData.php

<?php
    require_once ('../database.php');
    mysqli_select_db($conn, $database);

    $query = "SELECT * FROM user ORDER BY id ASC";

    $result = mysqli_query($conn, $query) or die(mysqli_error($conn));

    $rows = array();

    while($packages = mysqli_fetch_assoc($result)) {
        array_push($rows, $packages);
    }

    header('Content-type: application/json');
    echo json_encode($rows);
?>
<?php

    require_once ('../database.php');
    mysqli_select_db($conn, $database);

    if (isset($_POST['json'])) {
        $jsonObj = $_POST['json'];

        $jsonObj = json_decode($jsonObj);

        $query = "INSERT INTO user (first_name, last_name, description)"
                . " VALUES ('".$jsonObj->{'first_name'}."', '".$jsonObj->{'last_name'}."', '".$jsonObj->{'description'}."')";

        mysqli_query($conn, $query);

        header('Content-type: application/json');
        echo json_encode($_POST['json']);
    }
?>

当我运行testConsume/index.html并单击submit时,会显示警报消息
Failed
。当我检查数据库时,没有添加任何数据。我做错了什么?

删除
contentType:'application/json'

您发送的是嵌入在
应用程序/x-www-form-urlencoded
数据中的JSON,而不是普通JSON


或者。发送并解析实际的纯JSON:

contentType: 'application/json',
data: JSON.stringify({
    first_name: firstName,
    last_name: lastName,
    description: description
}),
在PHP中:

if (stripos($_SERVER["HTTP_CONTENT_TYPE"], "application/json")===0) {
    $jsonObj = json_decode(file_get_contents("php://input"));
}

危险:您很容易受到您需要的攻击。如果成功,请立即调用ajax。但数据不会发送到数据库。我保存到数据库的方式是否有问题?@KasunKodagoda-请参阅对该问题的评论,并使用
mysqli\u error
函数。
contentType: 'application/json',
data: JSON.stringify({
    first_name: firstName,
    last_name: lastName,
    description: description
}),
if (stripos($_SERVER["HTTP_CONTENT_TYPE"], "application/json")===0) {
    $jsonObj = json_decode(file_get_contents("php://input"));
}